好的,我正在使用 CMake 在 Linux 下为 ARM 目标构建 C++。我的一个名为 DEBUG 的 .h 文件中有一个#DEFINE。如果设置,我希望将各种跟踪串行的方法添加到构建中。我希望能够通过这样做来做到这一点“make debug”以使用此#DEFINE 集进行构建,并在不设置它的情况下进行正常的“make”构建。这可能吗?
此外,是否可以为 CMake 指定一个目标?因为我现在有 2 个 CMakeLists.txt,一个用于 x86,一个用于 Armel(具有不同的选项,例如在 x86 上使用调试信息构建,与 ARM 相比,ARM 需要一个剥离的、大小优化的二进制文件)。
最佳答案
看来你有两个问题。关于调试,您可以使用 CMAKE_BUILD_TYPE 来分隔调试/发布设置,并使用 $ cmake --build 。 --config Release
或 $ cmake --build 。 --config Debug
编译。
对于第二个,关于交叉构建,这是可能的。你可以这样做:
- 根据 this guide分别为arm和x86编写配置文件来设置编译器,归档器等。假设将x86的一个命名为*config_x86.cmake*和*config_arm.cmake* for arm。
定义一个 cmake 宏,例如 *MY_TARGET*。并在project命令前添加如下代码,
if (${MY_TARGET} STREQUAL "x86") include(config_x86.cmake REQUIRED) elseif (${MY_TARGET} STREQUAL "arm") include(config_arm.cmake REQUIRED) endif ()
然后像这样生成你的项目文件
$ cmake -DMY_TARGET=x86 "你的代码目录"
关于c++ - CMAKE - 调试/交叉构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7079947/