如何使用CMake获取目标库的基本名称?
我正在使用CMake变量名${lib}创建一个库,如下所示
set(lib lib)
add_library(${lib} ...
我需要生成的库文件的基名.
CMake将创建一个文件名为< prefix> lib.< extension>的库.其中 和 是特定于平台的.
我试过了生成器$< TARGET_FILE_NAME:${lib}>这给了我全名,因为我需要在COMMAND中使用它,这是CMake允许生成器的少数几个地方之一.
要使用CMake删除扩展,我需要使用GET_FILENAME_COMPONENT
GET_FILENAME_COMPONENT(<var> <filename> NAME_WE)
但这用于设置变量< var> (以正常的CMake方式)和发电机不在那里工作.
(如果你问我,CMake语言是不规则的憎恶.作为一个概念,CMake非常酷.)
最佳答案 我用
get_property和
get_filename_component这对我有用:
get_property(lib_loc TARGET lib PROPERTY LOCATION)
get_filename_component(lib_we ${lib_loc} NAME_WE)