如何在CMake中重命名库文件名?

时间:2015-06-24 23:43:34

标签: cmake

某些库的文件名遵循不同的约定,例如PAM库 - pam_unix.so,而不是libpam_unix.so

如何覆盖CMake中的目标库文件名以获取类似new_thing.so而非默认libnew_thing.so的内容?

2 个答案:

答案 0 :(得分:52)

You can change the Prefix, Output Name and Suffix using the set_target_properties() function and the PREFIX / OUTPUT_NAME / SUFFIX property in the following way:

Prefix:

    set_target_properties(new_thing PROPERTIES PREFIX "")

Output Name:

    set_target_properties(new_thing PROPERTIES OUTPUT_NAME "better_name")

Suffix:

    set_target_properties(new_thing PROPERTIES SUFFIX ".so.1")

答案 1 :(得分:15)

由于这与文件名有关,您可能会考虑查看install 以获取答案。 (果然,有一个RENAME条款,但这是一个红色的鲱鱼。)

而是使用set_target_properties命令更改target

图书馆目标具有内置属性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}"
        )