2016-09-15 3 views
2

プロジェクトを再編成しました。共有オブジェクトのビルドにサブディレクトリのソースコードを含める方法を知りたいと思います。私は今、次のディレクトリ構造を持っている:共有オブジェクトビルドにサブディレクトリを含める方法

add_library(MainProject SHARED src1.cpp src2.cpp) 

それは以下のフォルダを構築するように、どのように私は今、それを更新します:

src/ 
    Component/ 
     CMakeLists.txt 
     SubComponent1/ 
      src1.h 
      src1.cpp 
     SubComponent2/ 
      src2.h 
      src2.cpp 

私のCMakeLists.txtは、現在のように見えますか?また、CMakeLists.txtをSubComponentXフォルダに追加する必要がありますか?あなたはまだソースが1つのライブラリにBUITする場合は

は自分のプロジェクトにパスを変更、あなた

+0

タグの追加、およびC++が持っている*何*、正確には、この質問と関係がありますか? – WhozCraig

+0

サブディレクトリのファイルをメインライブラリにコンパイルする必要がある場合は、このファイルを 'add_library()'コールに追加してください。他のライブラリを構築したい場合は、メイン* CMakeLists.txt *またはサブディレクトリの* additional * 'add_library()'呼び出しを使用してください。だから、何が問題なの? – Tsyvarev

+0

@WhozCraigは、CおよびC++アプリケーションの構築に使用されるためです。また、CやC++の開発者が経験したことがあるので、私の質問に便利な答えを得ることができます。偶然、あなたのコメントは「有用な」カテゴリーに分類されません。 – jdie8274j

答えて

1

ありがとう:

add_library(MainProject SHARED 
    SubComponent1/src1.cpp 
    SubComponent2/src2.cpp 
) 

あなたのサブディレクトリのそれぞれが個別に構築したい場合は、あなたはsrc/Component/CMakeLists.txtadd_subdirectoryを使用することができます。

add_subdirectory(SubComponent1) 
add_subdirectory(SubComponent2) 

この場合、あなたは確かににCMakeListsファイルが必要になりますの宣言サブライブラリ:最後に、複数のライブラリファイルを回避しながら、あなたは別のコンパイルにobject librariesを宣言することができ

add_library(SubComponent1 SHARED src1.cpp) 

# ... 

target_link_libraries(MainProject SubComponent1) 

注:Cのための

add_library(SubComponent1 OBJECT src1.cpp) 

# ... 

add_library(MainProject $<TARGET_OBJECTS:SubComponent1> ...) 
+0

非常に参考になりました、ありがとう! – jdie8274j

関連する問題