2012-10-03 119 views
2

我使用make來構建我的項目。我有glfw作爲依賴項,它使用cmake來生成Makefile。這是我怎麼稱呼cmake從我的Makefile:CMake,在32位機器上構建64位

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。

回答

3

您需要檢測在Makefile你的弓,然後有條件地添加

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

cmake通話。

相關問題