我需要将配置文件作为我的静态库的一部分,这意味着如果某些项目链接到我的静态库,则应将配置文件复制到该项目的自动构建目录中。对于引用静态库的所有项目,此行为都应该相同。
这是我要实现的目标:
libabc
abc.cfg
project1
build
abc.cfg -- Because project1 references static library libabc
我不想为每个项目更改CMakeLists.txt
。
答案 0 :(得分:0)
要知道某个库是否为链接,可以使用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
循环。