延迟将库从一个子模块链接到另一子模块

时间:2020-02-16 14:40:46

标签: 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

0 个答案:

没有答案
相关问题