通过CMAKE将配置文件作为静态库的一部分



我需要将配置文件作为静态库的一部分,这意味着如果一些项目链接到我的静态库,配置文件应该自动复制到该项目的构建目录中。对于引用静态库的所有项目,此行为应该相同。

这就是我正在努力实现的目标:

libabc
abc.cfg
project1
build
abc.cfg  -- Because project1 references static library libabc

我不想为每个项目更改CMakeLists.txt

要知道库是否为链接,可以使用get_property()获取目标的所有链接库的列表,并搜索LINK_LIBRARIES属性。

使用get_property(),您将拥有链接库的列表。你可以用string()搜索是你的。

然后,当您找到链接的库时,可以使用file()将配置文件复制到相应的文件夹中。

你得到一个类似的代码

get_property(MY_LINKED_LIBRARIES TARGET ${MY_TARGET} PROPERTY LINK LIBRARIES)
string(FIND ${MY_LINKED_LIBRARIES} ${MY_LIBRARY_NAME} LIBRARY_FIND)
if (LIBRARY_FIND NOT EQUAL -1)
file (COPY "abc.cfg" DESTINATION "${MY_LIBRARY_NAME}/abc.cfg")
endif ()

为您的所有库提供for循环。

最新更新