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に3つの変数を設定することでした。

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 に答える