使用CMake获取目标文件名,不带扩展名
问题描述:
如何使用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,作为一个概念,是很酷。)
答
我用get_propertyget_filename_component这个工作对我来说:
get_property(lib_loc TARGET lib PROPERTY LOCATION)
get_filename_component(lib_we ${lib_loc} NAME_WE)
+0
自2.8.12起已弃用。由于CMake运行时LOCATION是“猜测”的。但是在实际的编译时间之前,你不能完全知道lib将会在哪里结束。因此,使用$
“NOT FOUND” - 这或许表明,如果你不将它设置为任何东西(如我想的默认值)是抢先ÿ? – thoni56