1

我正在做一个项目,其中一个动态库加载了一系列相关的类。这些类可能依赖于类似的实用程序类,但通常相互依赖地使用。我目前的结构是:

MainLibraryDirectory/
    CMakeLists.txt
    mainlibrary.cpp //Provides access to underlying classes
    mainlibrary.h
    /Class1/
        CMakeLists.txt
        class1.cpp
        class1.h
    /Class2/
        CMakeLists.txt
        class2.cpp
        class2.h

我的问题与 Class1 和 Class2 有关CMakeLists.txt。我目前的方法是在主 cmake 中设置三个变量,然后:

set(my_sources ${my_sources} ${CMAKE_CURRENT_SOURCE_DIR}/class1.cpp PARENT_SCOPE)
set(my_headers ${my_headers} ${CMAKE_CURRENT_SOURCE_DIR}/class1.h PARENT_SCOPE)
set(required_libraries ${required_libraries} boost_bla) 

有一个更好的方法吗?更具体地说,我希望能够使用include_directory低级中的功能CMakeLists.txt

4

1 回答 1

3

您可以将 Class1 和 Class2 构建到单独的静态库中,然后将它们链接到主库中。

像这样的东西:

# Class1/CMakeLists.txt
project(class1)
add_library(class1 STATIC class1.cpp class1.h)

# Class2/CMakeLists.txt
project(class2)
add_library(class2 STATIC class2.cpp class2.h)

# CMakeLists.txt
project(mainlibrary)
add_subdirectory(Class1)
add_subdirectory(Class2)
add_library(mainlibrary SHARED mainlibrary.h mainlibrary.cpp)
target_link_libraries(mainlibrary class1 class2)
于 2013-02-07T21:18:10.590 回答