如何使用CMake获取目标库的基本名称?
我正在使用CMake变量名$ {lib}创建一个库,如下所示:
set(lib lib)
add_library(${lib} ...
Run Code Online (Sandbox Code Playgroud)
我需要生成的库文件的基本名称。
CMake将使用文件名创建库,<prefix>lib.<extension>
其中<prefix>
和<extension>
都是平台特定的。
我已经尝试过使用生成器$<TARGET_FILE_NAME:${lib}>
给我全名,它可以工作,因为我需要在COMMAND中使用它,这是CMake允许生成器的少数几个地方之一。
要使用CMake删除扩展名,我需要使用GET_FILENAME_COMPONENT,如
GET_FILENAME_COMPONENT(<var> <filename> NAME_WE)
Run Code Online (Sandbox Code Playgroud)
但这用于设置变量<var>
(以常规CMake方式),并且生成器在那里不起作用。
(如果您问我,CMake语言是不规则的可恶。从概念上讲,CMake非常酷。)
小智 6
我将get_property与get_filename_component一起使用,这对我有用:
get_property(lib_loc TARGET lib PROPERTY LOCATION)
get_filename_component(lib_we ${lib_loc} NAME_WE)
Run Code Online (Sandbox Code Playgroud)
查询目标的OUTPUT_NAME属性:
get_target_property(_baseName lib OUTPUT_NAME)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6420 次 |
最近记录: |