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

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

如何在 CMake 中覆盖目标库文件名以获得类似 new_thing.so的内容而不是默认的 libnew_thing.so

44451 次浏览

因为这与文件名有关,所以答案是 你可以看看 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}"
)

您可以使用 set_target_properties()函数和 PREFIX/OUTPUT_NAME/SUFFIX属性更改前缀、输出名称和后缀,方法如下:

前缀:

    set_target_properties(new_thing PROPERTIES PREFIX "")

输出名称:

    set_target_properties(new_thing PROPERTIES OUTPUT_NAME "better_name")

后缀:

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