【发布时间】:2015-09-17 21:06:57
【问题描述】:
我想提供一种方法,始终将我的目标构建为 32 位或始终构建为 64 位可执行文件,使用 cmake 独立于主机系统(为 gcc 添加“-m32”或“-m64”标志,目前还不确定其他编译器该怎么做)。
我可以想到三种方法来做到这一点,我应该使用哪一种?
- 一个选项 (-DUSE32bit=true)
- 工具链 (-DCMAKE_TOOLCHAIN_FILE=64bit.toolchain)
- 构建类型 (-DCMAKE_BUILD_TYPE=release32)
在我的情况下,强制 32 位构建将是默认设置,并且应该易于使用。强制 64 位构建在某些情况下也很有用,应该不会太难。使用主机系统的位宽对于我的情况很少有意义,我不想支持它。
我在这里找到了一个相关的问题 (The proper way of forcing a 32-bit compile using CMake),但答案主要是讨论如何做到这一点,而不是如何最好地使其可配置。
【问题讨论】:
-
对于 Visual Studio,您可以通过设置适当的生成器来选择它,例如Visual Studio 12 2013 Win64 - Specify target platform x64、
cmake -A <platform-name>command line option 或 CMAKE_GENERATOR_PLATFORM。 -
谢谢,但这也应该适用于 Linux。
-
还有第四种变体:用
cmake -C 64bit.cmake ...之类的东西预加载缓存。如果我不进行交叉编译,我更喜欢它而不是工具链变体。工具链文件通常会影响编译器检测本身。
标签: c++ cmake 32bit-64bit