碰巧的是,在某个时候我得到了一个带有usb模块的项目,该项目具有一个子模块....大约5-6个项目相互层叠。阅读和使用不方便。如果通过find_package实现,则项目将变得更加灵活,您可以将子模块与库连接或使用某些系统模块。
然后,该结构将不会级联,而是变得简单。所有子模块将在工作项目中连接。
更多细节,一个测试项目:
Project
-> subs
-> lib_one
-> lib_two
所需的第二个库是第一个库的逻辑。
1)第一个CMakeLists library.txt:
cmake_minimum_required(VERSION 3.6)
set(One_SOURCES
One.h
One.cpp
)
add_library(One_LIB STATIC ${One_SOURCES})
2)第二个CMakeLists library.txt:
cmake_minimum_required(VERSION 3.6)
set(Two_SOURCES
./Two.cpp
./Two.h
)
add_library(Two_LIB STATIC ${Two_SOURCES})
find_package(One_LIB)
target_link_libraries(Two_LIB PRIVATE One_LIB)
在主项目的CMakeLists.txt中:
cmake_minimum_required(VERSION 3.6)
set(PROJ_NAME MAIN)
project(${PROJ_NAME})
set(SOURCES
./main.cpp
)
add_executable(${PROJ_NAME} ${SOURCES})
add_subdirectory(subs)
find_package(One_LIB)
target_link_libraries(${PROJ_NAME} PRIVATE One_LIB)
find_package(Two_LIB)
target_link_libraries(${PROJ_NAME} PRIVATE Two_LIB)
此示例项目已简化。他要走了。虽然有警告。我的整个项目都不会建立,因为在我看来,由于库的连接不正确。
请帮助我解决这个问题,或者您可以共享一个指向该主题的良好资源的链接。我将非常感谢您。
最后我想来自这样一个项目:
Project
-> subs
-> lib_two
-> subs
-> lib_one
对于这样的项目:
Project
-> subs
-> lib_one
-> lib_two