CMake add_library( 对象 ) 是否有环境变量<lib><src>?

Are there environment variables for CMake add_library(<lib> OBJECT <src>)?

本文关键字:lt gt src 环境变量 lib library add 对象 是否 CMake      更新时间:2023-10-16

CMake is 2.8.8在编译时引入了OBJECT库类型:add_library(OBJECT)。这是一个有用的构造,可以将所有类编译到.o文件,但不要将它们添加到库中。

但是,我不确定它最终会附加到生成的make文件中的命令上的标志是什么。基本上,在执行add_library(SHARED)命令时,它会添加由CMAKE_SHARED_library_CXX_flags指定的任何标志。我希望能够为JUST OBJECT库指定构建标志,而不必求助于更全局的标志,如CMAKE_CXX_flags_DEBUG和CMAKE_CXX _flags_LEASE。有人知道这样的旗帜是否存在或计划中吗?

综述:

# has CMAKE_SHARED_LIBRARY_CXX_FLAGS to set SHARED library build flags
add_library(<lib> SHARED <srcs>)
# Is any environment variable available to set OBJECT library build flags?
add_library(<lib> OBJECT <srcs>)

我希望有一个类似CMAKE_OBJECT_LIBRARY_CX_FLAGS的环境变量来设置OBJECT构建标志。通过查看源代码(Modules/SystemInformation.in和Modules/CMakeCXXInformation.cmake),我没有发现任何特定于OBJECT库的内容。

编辑:具体来说,我想将-fPIC添加到OBJECT库中,但不添加到可执行文件中,这就是为什么我不想在CMAKE_CXX_FLAGS_*中指定标志

使用CMake 2.8.9或更高版本时,使用属性POSITION_INDEPENDENT_CODE以独立于编译器的方式启用位置独立代码:

add_library(<lib> OBJECT <srcs>)
set_target_properties(<lib> PROPERTIES POSITION_INDEPENDENT_CODE ON)

对于较旧版本的CMake,可以设置OBJECT_LIBRARY目标的COMPILE_FLAGS属性:

add_library(<lib> OBJECT <srcs>)
set_property(TARGET <lib> PROPERTY COMPILE_FLAGS "-fPIC")