我有一个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
之前插件文件位于正确的位置?
答案 0 :(得分:1)
您可以将图书馆直接生产到需要的地方,而无需任何两步过程,首先需要在某个地方创建然后复制(这也是可能的)。为此,您可以在媒体库中设置LIBRARY_OUTPUT_DIRECTORY属性:
set_target_properties(plugin PROPERTIES LIBRARY_OUTPUT_DIRECTORY
"path_to_executable/Plugins")