我有一个名为MYLIBS的包,由两个库lib1和lib2组成,我想通过包的配置文件导出它们。项目结构如下:
\n\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Lib1\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib1-class.cpp\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 lib1-class.h\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib2\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib2-class.cpp\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib2-class.h\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 cmake\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 LIBSConfig.cmake.in\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\nRun Code Online (Sandbox Code Playgroud)\n\n在lib2中我有:
\n\nadd_library(lib2\n STATIC\n ${SOURCE_FILES}\n )\ntarget_include_directories(lib2 PRIVATE /path/to/lib1)\ntarget_link_libraries(lib2 PUBLIC lib1)\nadd_dependencies(lib2 lib1)\ninstall(\n TARGETS\n lib2\n DESTINATION\n lib/MYLIBS/lib2\n EXPORT\n lib2Exports\n)\ninstall(\n EXPORT\n lib2Exports\n DESTINATION\n lib/MYLIBS/lib2\n)\nRun Code Online (Sandbox Code Playgroud)\n\n与 lib1 相同,只是 lib1 没有add_dependencies()和target_include/link(),因为它没有 。
在我的配置文件模板中,我有:
\n\n@PACKAGE_INIT@\n## PROJECT_LIBRARIES is filled-in during the package build. in this case : lib1,lib2\nset(@PROJECT_NAME@_LIBRARIES @PROJECT_LIBRARIES@)\n\n## The public …Run Code Online (Sandbox Code Playgroud)