在链接另一个文件之前复制目标文件(CMake)

时间:2018-08-27 16:47:53

标签: cmake

我有一个CMakeLists.txt可以构建一些c ++插件,而另一个CMakeLists.txt可以构建应加载此插件的应用程序。启动应用程序之前,我需要将插件文件复制到相对于应用程序二进制文件的某个路径(例如path_to_executable/Plugins)。

插件的CMakeLists.txt

...

add_library(plugin SHARED lib.cpp)

...

应用程序的CMakeLists.txt

...

target_sources(app PRIVATE main.cpp)
add_subdirectory(plugin_subfolder)
add_dependencies(app plugin)
???

如何创建规则以确保在编译目标app之前插件文件位于正确的位置?

1 个答案:

答案 0 :(得分:1)

您可以将图书馆直接生产到需要的地方,而无需任何两步过程,首先需要在某个地方创建然后复制(这也是可能的)。为此,您可以在媒体库中设置LIBRARY_OUTPUT_DIRECTORY属性:

set_target_properties(plugin PROPERTIES LIBRARY_OUTPUT_DIRECTORY 
    "path_to_executable/Plugins")