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

标签 cmake mingw glfw

我正在使用 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/

相关文章:

python - 将 OpenCV 链接到 contrib 模块的 tesseract - windows cmake

c++ - 除非在 target_link_directories() 命令上调用 pthread,否则 CMake 构建失败

c++ - 未实现 : unexpected ast of kind ltgt_expr in C++

c - 无法使用 CMake 错误构建 GLFW

c++ - 交叉编译中的 CMake CMAKE_AUTOMOC

objective-c - 无法在动态链接库 libintl-8.dll 中找到过程入口点 __printf__

使用 mingw-w64 和 autotools 编译 Windows

c++ - 在 Qt 中使用 std::tr1::normal_distribution

c++ - 错误消息 : "KHR/khrplatform.h" cannot be opened, 但 "khrplatform"在程序中的任何位置都不存在

c++ - 使用 g++ 编译器的 OpenGL C++,无法在 Windows 10 上找到 GLFW(无 Visual Studio)