某些庫遵循不同的文件名約定,例如PAM庫 - pam_unix.so
,而不是libpam_unix.so
。如何在CMake中重命名庫文件名?
如何覆蓋CMake中的目標庫文件名以獲得類似new_thing.so
而不是默認的libnew_thing.so
?
某些庫遵循不同的文件名約定,例如PAM庫 - pam_unix.so
,而不是libpam_unix.so
。如何在CMake中重命名庫文件名?
如何覆蓋CMake中的目標庫文件名以獲得類似new_thing.so
而不是默認的libnew_thing.so
?
使用無論是PREFIX
或OUTPUT_NAME
目標屬性:
set_target_properties(new_thing PROPERTIES PREFIX "")
或
set_target_properties(new_thing PROPERTIES OUTPUT_NAME "new_thing")
由於這與文件名,,你可能會想到看install
爲答案。 (果然,有一個RENAME
條款,但是這是一個紅鯡魚)。
相反,改變target
,使用set_target_properties
命令。
庫目標有內置屬性,PREFIX
。另一個相關的是SUFFIX
。這兩個屬性被添加到目標名稱以決定安裝時的最終文件名。
對於OQ:
# By default, the library filename will be `libnew_thing.so`
add_library(new_thing ${NEW_THING_SRCS})
# This changes the filename to `new_thing.so`
set_target_properties(new_thing PROPERTIES PREFIX "")
比方說,你也想的文件名有版本:
# This then changes the filename to `new_thing.so.1`,
# if the version is set to "1".
set_target_properties(new_thing
PROPERTIES PREFIX ""
SUFFIX ".so.${NEW_THING_VER}"
)
如果您需要更改文件名的末尾,請使用'SUFFIX'。 – CivFan