【问题标题】:Cmake change compilation flagsCmake 更改编译标志
【发布时间】:2012-06-18 06:09:05
【问题描述】:

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

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

但是我怎样才能改变以前设置的标志呢? (不将标志附加到 c/cxx 标志)。

【问题讨论】:

    标签: gcc configuration cmake flags


    【解决方案1】:

    我自己找到了解决方案。 string 功能在哪里有帮助。 例如,我可以使用变量 BENCH_ARCH 来更改 ARM 拱门。 在所有默认 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=&lt;...&gt; ... 启用-march=armv5te 并使用cmake -DCMAKE_TOOLCHAIN_FILE=&lt;...&gt; ... 启用默认工具链设置。希望这不仅对我有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多