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

时间:2015-09-20 05:58:50

标签: cmake

如何使用CMake获取目标库的基本名称?

我正在使用CMake变量名$ {lib}创建一个库,如

set(lib lib)
add_library(${lib} ...

我需要生成的库文件的基名。

CMake将创建一个文件名为<prefix>lib.<extension>的库,其中<prefix><extension>都是特定于平台的。

我已经尝试了生成器$<TARGET_FILE_NAME:${lib}>,它为我提供了全名,因为我需要在COMMAND中使用它,这是CMake允许生成器的少数几个地方之一。

要使用CMake删除扩展程序,我需要使用GET_FILENAME_COMPONENT,如

GET_FILENAME_COMPONENT(<var> <filename> NAME_WE)

但这用于设置变量<var>(以正常的CMake方式),并且生成器在那里不起作用。

(如果你问我,CMake语言是不规则的憎恶。作为一个概念,CMake非常酷。)

1 个答案:

答案 0 :(得分:2)

我将get_propertyget_filename_component一起使用,这对我有用:

get_property(lib_loc TARGET lib PROPERTY LOCATION)
get_filename_component(lib_we ${lib_loc} NAME_WE)