我正在使用 make
构建我的项目。我有 glfw
作为依赖项,它使用 cmake
生成 Makefile。我是这样打电话的cmake
来自我的 Makefile:
glfw:
$(MKDIR) $(CBUILD_PATH)$(PATH_SEP)glfw
ifeq ($(OS),"MinGW")
cd $(CBUILD_PATH)$(PATH_SEP)glfw && \
cmake -G "MSYS Makefiles" -DBUILD_SHARED_LIBS=ON -DGLFW_BUILD_EXAMPLES=OFF -DGLFW_BUILD_TESTS=OFF ..$(PATH_SEP)..$(PATH_SEP)src$(PATH_SEP)c$(PATH_SEP)glfw
cd $(CBUILD_PATH)$(PATH_SEP)glfw && $(MAKE) $(MFLAGS)
cd $(CBUILD_PATH)$(PATH_SEP)glfw$(PATH_SEP)src && echo "..\..\..\$(IMPLIB) /s glfw3.lib glfw3.dll && exit;" | cmd
else
cd $(CBUILD_PATH)$(PATH_SEP)glfw && \
cmake -DBUILD_SHARED_LIBS=OFF -DGLFW_BUILD_EXAMPLES=OFF -DGLFW_BUILD_TESTS=OFF ..$(PATH_SEP)..$(PATH_SEP)src$(PATH_SEP)c$(PATH_SEP)glfw
cd $(CBUILD_PATH)$(PATH_SEP)glfw && $(MAKE) $(MFLAGS)
endif
不是很优雅,但它的工作原理。我可以指定一个
-m64
GCC 在 32 位机器上构建 64 位二进制文件的标志,但我不知道如何制作 cmake
将此标志添加到命令行(不修补 CMakeLists.txt
)。感觉大多数都有命令行解决方案,但我找不到它。请注意,我主要需要在 Windows 上使用它,我在那里使用 MinGW/Msys。
最佳答案
您需要在 Makefile 中检测您的拱门,然后有条件地添加
-D CMAKE_{C,CXX}_FLAGS=-m64
到
cmake
称呼。
关于CMake,在 32 位机器上构建 64 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12708068/