Flo*_*ogo 16 c++ cmake 32bit-64bit
我想提供一种方法,始终将我的目标构建为32位或始终为64位可执行文件,并且cmake独立于主机系统(为gcc添加"-m32"或"-m64"标志,不确定然而,如何为其他编译器做什么).
我可以想到三种方法,我应该使用哪种方法?
在我的情况下,强制32位构建将是默认的,应该易于使用.强制64位构建对某些情况也很有用,并且不应该太难.使用主机系统的位宽很少对我的情况有意义,我不想支持它.
我在这里找到了一个相关的问题(使用CMake强制进行32位编译的正确方法),但答案主要是讨论如何完成它,而不是如何使其可配置.
tre*_*esf 15
对于Visual Studio和https://cmake.org/cmake/help/latest/variable/CMAKE_GENERATOR_PLATFORM.html
对于VS 2005及更高版本的Visual Studio生成器,它指定了目标体系结构.
cmake . -DCMAKE_GENERATOR_PLATFORM=x64
Run Code Online (Sandbox Code Playgroud)
小智 5
使用工具链
- 一个选项(-DUSE32bit = true)
我想这不可扩展.那么如果你想建立N个项目呢?您必须添加N个选项.
- 构建类型(-DCMAKE_BUILD_TYPE = release32)
这可能效果很好.但在我看来,你正在混合不相关的东西.此外,我确信你必须find_package通过设置一些*_ROOTCMake变量来调整行为.它是不可能的CMAKE_BUILD_TYPE(至少,再次,以可扩展的方式).
- 工具链(-DCMAKE_TOOLCHAIN_FILE = 64bit.toolchain)
最好的变种.如果你想构建两个项目 - 只需使用相同的工具链:
cmake -Hproj-1 -B_builds/proj-1 -DCMAKE_TOOLCHAIN_FILE=/.../64bit.toolchain
cmake -Hproj-2 -B_builds/proj-2 -DCMAKE_TOOLCHAIN_FILE=/.../64bit.toolchain
Run Code Online (Sandbox Code Playgroud)
如果你想用64位架构构建你的第三方ExternalProject_Add - 只需将工具链传递给CMAKE_ARGS:
ExternalProject_Add(
...
CMAKE_ARGS ... -DCMAKE_TOOLCHAIN_FILE=/.../64bit.toolchain
...
)
Run Code Online (Sandbox Code Playgroud)
想要适应find_package- 只需将任何CMake变量添加到工具链文件中.
| 归档时间: |
|
| 查看次数: |
19024 次 |
| 最近记录: |