c++ - 使用 CMake 生成 32 位/64 位 Eclipse CDT 项目

标签 c++ eclipse g++ cmake eclipse-cdt

我正在设置一个 C++ 项目,该项目将为 32 位和 64 位版本的 Windows 和 Ubuntu 构建。我正在使用 CMake 2.8.4,在玩了几个小时之后,设置了 VS2010 32 位和 64 位项目。我遇到的问题是 Ubuntu 端的 Eclipse 生成器(技术上适用于所有平台上的 Eclipse 生成器)没有单独的 32 位/64 位版本。

我知道有一个 GCC 编译器开关可以指示您想要哪种位类型(-m32、-m64),我不介意有单独的解决方案,但是当我在构建目录中运行 cmake 时,我该如何告诉它我想要哪一个?如果没有内置方式,是否可以将自定义变量/值(如 BITTYPE=64)传递给 cmake 命令?这样我就可以使用简单的 if/else 处理 CMakeLists.txt 文件中的其余部分。

最佳答案

在 Linux 下,CMake 查看编译器标志以确定您是针对 32 位还是 64 位进行编译。您可以通过在运行 cmake 时设置 CMAKE_C_FLAGSCMAKE_CXX_FLAGS 信息来传递该信息:

cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32

确定 cmake 生成的是 32 位还是 64 位项目的可移植方法是查询 CMAKE_SIZEOF_VOID_P变量,例如:

if (CMAKE_SIZEOF_VOID_P EQUAL 8)
   # 64-bit project
else()
   # 32-bit project
endif()

关于c++ - 使用 CMake 生成 32 位/64 位 Eclipse CDT 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6576803/

相关文章:

java - 如何继承WizardResourceImportPage类?

c - 在 Eclipse 中处理自定义 makefile 时出现问题

c++ - g++-4.4 中的强类型枚举

c++ - 编译器是否应该忽略导致运行构造函数或析构函数的未使用变量?

c++ - C++内存管理错误

C++ 时间限制不起作用

c++ - 是否可以缩短此声明?

c++ - 避免正则表达式贪婪

java - Android 将文件夹从 Assets 复制到内部设备应用程序数据文件夹

c++ - 错误 : ‘List’ is not a template type