使用CMake获取没有扩展名的目标文件名

如何使用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)
点赞