gcc - Cmake 更改编译标志

标签 gcc configuration cmake flags

我想为我的 cmake 项目运行自动优化标志基准测试。
项目是交叉编译的,基本的 c/cxx 标志在工具链文件中设置,可分配给 -DCMAKE_TOOLCHAIN_FILE=<...> .

我想在基准测试期间更改 c/cxx 标志,但我不想在每次基准测试迭代时更改工具链文件。我只想将工具链中设置的一些标志更改为其他值(例如, -mtune=cortex-a8-mtune=cortex-a9 )。我认为最好的方法是使用 -DMY_TUNE_FLAG=<..> .

但是我如何更改以前设置的标志? (不将标志附加到 c/cxx 标志)。

最佳答案

我自己找到了解决方案。哪里有帮助string功能。
例如,我可以使用变量 BENCH_ARCH 来更改 ARM arch。
我在所有默认 C/C++ 标志定义之后写在工具链文件中。首先,添加用于缓存的变量:

...
set(BENCH_ARCH "${BENCH_ARCH}" CACHE STRING "Arch" FORCE)`
...

之后,检查变量是否已设置并替换标志变量
if(BENCH_ARCH)
    string(REGEX REPLACE "-march=[A-Za-z_0-9/-]*" "-march=${BENCH_ARCH}"          <variable, which set flags> ${<variable, which set flags>})
endif()
...

例如:
string(REGEX REPLACE "-march=[A-Za-z_0-9/-]*" "-march=${BENCH_ARCH}" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})

现在,我可以使用 cmake -DBENCH_ARCH=armv5te -DCMAKE_TOOLCHAIN_FILE=<...> ...用于启用 -march=armv5te并使用 cmake -DCMAKE_TOOLCHAIN_FILE=<...> ...用于启用默认工具链设置。希望这不仅对我有帮助。

关于gcc - Cmake 更改编译标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11077679/

相关文章:

java - 创建 PropertyPlaceHolderConfigurer 的多个实例 - Spring

c++ - 配置文件的实现

c++ - cmake add_custom_command 失败,目标被删除

vim - 检测 Vim 生成的可执行文件

c++ - `decltype` 作为模板函数声明中模板类型规范的一部分

c - 在系统 verilog 代码中集成 fftw C 函数调用

c++ - 使 GCC 的 ASM 标签可用于标记化

c - 如何解密使用 cbc_encrypt (Linux GCC) 加密的内容

java - Struts 2 中的默认 Action 包

c++ - 如何在 CMake 中使用 PJSIP 库?