cmake - 将库从一个子模块延迟链接到另一个子模块
问题描述
碰巧在某个时候我得到了一个有一个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
解决方案
推荐阅读
- python - 打印嵌套列表时如何摆脱索引错误?
- c# - MVC - 在视图中显示项目列表的问题
- html - 移动设备上的网站元素太小
- javascript - NextJS 组件服务器端渲染,来自调用者组件的参数注入
- python - 将多个数据帧的列转换为日期时间的 Pandas 不能循环工作
- flask - 烧瓶只为一条路线提供 404
- javascript - 谁能解释一下为什么答案是 { name : 'Linda'};
- javascript - 将 fetch 与 express 和 ejs 一起使用会给出 400 个错误请求以及 json 中的意外令牌 <
- visual-studio-code - 尝试在本地启动模式下连接到 vscode-hack 调试器时,可视代码调试器适配器立即死亡
- html - 如何使 flex-wrap 项目内联而不是块?