我有一个大型的cmake项目,目前完全用于生产;默认的gcc标志选项类似于-fpic -s -O3
。
使用不同的gcc标志重新编译项目的一小部分的最简单方法是什么?
但我知道如何实现这一目标的唯一方法是使用cmake重新生成我的makefile,构建子项目,并再次重新生成makefile。
$ cmake ../ -DCMAKE_C_FLAGS="-fpic -g"
$ make subproject
$ cmake ../ -DCMAKE_C_FLAGS="-fpic -s -O3"
我希望能够将cmake排除在外,并执行以下操作:
$ make C_FLAGS="-fpic -g" subproject
答案 0 :(得分:1)
您可以使用COMPILE_FLAGS
target property在每个目标的基础上设置编译标记。
请注意,这不能直接从命令行设置,因此您必须更改CMakeLists.txt。但是,您可以包含option,允许从命令行切换它:
add_library(subproject...)
set_property(TARGET subproject PROPERTY COMPILE_FLAGS "-fpic")
option(BUILD_SUBPROJECT_WITH_O3 Toggles optimizations for the subproject" OFF)
if(BUILD_SUBPROJECT_WITH_O3)
set_property(TARGET subproject PROPERTY APPEND COMPILE_FLAGS "-s" "-O3")
else()
set_property(TARGET subproject PROPERTY APPEND COMPILE_FLAGS "-g")
endif()