在 CMake 中为多个配置混合构建标志
Mix build flags for several configurations in CMake
根据 CMake 文档 here,我们可以使用构建类型来指定我们自己的构建类型,根据 CMAKE_BUILD_TYPE
选项向我们的自定义构建添加标志。
例如,if CMAKE_BUILD_TYPE == Profile
,CMake 将使用 CMAKE_CXX_FLAGS_PROFILE
作为构建标志。
我想知道是否有任何方法可以 "inherit" 从另一种构建类型构建标志。例如,我想要一个跟踪和调试构建以及一个跟踪和发布构建。是否可以执行类似 CMAKE_BUILD_TYPE=Trace_Debug
的操作,将 CMAKE_CXX_FLAGS_DEBUG
和 CMAKE_CXX_FLAGS_TRACE
添加到构建中?我想这可能会有一些问题,因为它会允许项目有相互矛盾的构建标志,但现在没有什么禁止添加 -O1
和 -O3
到我们的标志,所以这个问题已经存在。
CMake 中没有 "inheriting" 构建类型这样的东西。
Is it possible to do something like CMAKE_BUILD_TYPE=Trace_Debug
which adds CMAKE_CXX_FLAGS_DEBUG
and CMAKE_CXX_FLAGS_TRACE
to the build?
只需定义一个(新)变量 CMAKE_CXX_FLAGS_TRACE_DEBUG
并适当地设置它的值。设置变量的值时,您可以使用其他变量的值:
# Combine values of two variables into the single one.
set(CMAKE_CXX_FLAGS_TRACE_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${CMAKE_CXX_FLAGS_TRACE}")
从结果变量中删除冲突标志由您决定。 CMake 不知道有冲突的标志,它只是将它们传递给编译器工具。
根据 CMake 文档 here,我们可以使用构建类型来指定我们自己的构建类型,根据 CMAKE_BUILD_TYPE
选项向我们的自定义构建添加标志。
例如,if CMAKE_BUILD_TYPE == Profile
,CMake 将使用 CMAKE_CXX_FLAGS_PROFILE
作为构建标志。
我想知道是否有任何方法可以 "inherit" 从另一种构建类型构建标志。例如,我想要一个跟踪和调试构建以及一个跟踪和发布构建。是否可以执行类似 CMAKE_BUILD_TYPE=Trace_Debug
的操作,将 CMAKE_CXX_FLAGS_DEBUG
和 CMAKE_CXX_FLAGS_TRACE
添加到构建中?我想这可能会有一些问题,因为它会允许项目有相互矛盾的构建标志,但现在没有什么禁止添加 -O1
和 -O3
到我们的标志,所以这个问题已经存在。
CMake 中没有 "inheriting" 构建类型这样的东西。
Is it possible to do something like
CMAKE_BUILD_TYPE=Trace_Debug
which addsCMAKE_CXX_FLAGS_DEBUG
andCMAKE_CXX_FLAGS_TRACE
to the build?
只需定义一个(新)变量 CMAKE_CXX_FLAGS_TRACE_DEBUG
并适当地设置它的值。设置变量的值时,您可以使用其他变量的值:
# Combine values of two variables into the single one.
set(CMAKE_CXX_FLAGS_TRACE_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${CMAKE_CXX_FLAGS_TRACE}")
从结果变量中删除冲突标志由您决定。 CMake 不知道有冲突的标志,它只是将它们传递给编译器工具。