CMake,在32位机器上构建64位

时间:2012-10-03 12:00:58

标签: cmake mingw glfw

我正在使用make来构建我的项目。我将glfw作为依赖项,它使用cmake生成Makefile。这就是我从Makefile中调用cmake的方法:

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

不是很优雅,但它有效。我可以为GCC指定一个-m64标志,以便在32位机器上构建64位二进制文​​件,但我不知道如何使cmake将此标志添加到命令行(不修补{{1} }})。感觉就像大多数是命令行解决方案,但我无法找到它。 注意,我需要这个主要用于Windows,我在那里使用MinGW / Msys。

1 个答案:

答案 0 :(得分:4)

您需要在Makefile中检测您的拱门,然后有条件地添加

-D CMAKE_{C,CXX}_FLAGS=-m64

cmake来电。