0

せずに、ソースファイルのリストを生成します。私はこのことをここで読んだとしてcmakeのは、私は現在、私のC++プロジェクトコンパイルするソースファイルの私のリストCMakeのため を生成するコードのこの部分を使用していグロブ

file(GLOB CPP_FILES src/*.cpp) 

を私はが、Pythonのようなスクリプト言語に慣れていないので、CMakeを使ってCMakeを使って明示的にソースファイルをリストすることができるかどうかを知りたいと思っています。

私はCMakeにすべてのcppファイルを手動で追加する必要があるので、特に乗員と一緒に作業する場合は、これを求めています。

プロジェクトはプラットフォームに依存せず、ソースファイルはサブフォルダにあります。

+2

***私は、私はほとんどすべての私のプロジェクトのためにそれを行う***私は明示的にソースファイルを一覧表示することができますかどうかを知りたいと思います。 1000個のソースファイルを持つものでさえも。 – drescherjm

+1

CMakeはリストを生成せず、CMakeLists.txtがあなたの後にあればそれを修正しません。コードを書くときに手動でファイル名を1つずつ追加します。 – drescherjm

+0

それは、CMakeに手作業ですべてのファイルを追加する作業がたくさん必要になります。 – ShadowDragon

答えて

1

CMakeがこれを行うためのネイティブメソッドはありません。

大きなプロジェクトや共有プロジェクトでは、ファイルシステムやその他のリポジトリをスキャンしてソースファイルをリストするCMakeファイルを生成できるスクリプトを使用します。

これで、include()というCMakeファイルが生成されます。

CMakeファイル内の命令は、既知のターゲットに対してtarget_sources()を使用している可能性があります。

CMakeLists.txt:

add_executable(myexe "") 
include(sourcelist) 

sourcelist.cmake:

target_sources(myexe PRIVATE 
    mysourcefile1.cpp 
    mysourcefile2.cpp 
) 

または変数に追加経由:

CMakeLists.txt:

include(sourcelist) 
add_executable(myexe ${sources}) 

sourcelist.cmake:

set(sources ${sources} 
    mysourcefile1.cpp 
    mysourcefile2.cpp 
) 
+0

_myexe_の後に** PRIVATE **キーワードが使われている理由を説明できますか? – ShadowDragon

+0

@shadowdragonあなたが追加している情報を誰が使っているのですか? 「プライベート」は、現在のターゲットだけがそれを使用していると言います。 "INTERFACE"は他のターゲットだけがそれを使用しており、この現在のターゲットはそれを使用していないと言います。 "PUBLIC"は、このターゲットと他のターゲットの両方が情報を使用すると言います。この場合の情報は実行可能ファイルのソースファイル名に過ぎないため、実行可能なターゲットは(ライブラリーとは異なり)他のターゲットによってほとんど使用されず、ソースではない。この場合、PRIVATEまたはPUBLICのいずれかを使用できます。 – utopia

関連する問題