3

私が理解していないCMakeの魔法がい​​くつかあります。次のようなディレクトリを持つ小さな C++ プロジェクトの場合、CMakeLists.txt ファイルはどのようになりますか。

.
├── bin
└── src
    ├── src
    └── test

bin      — directory for built program
src/src  — directory for source
src/test — directory for tests

テストには、src/src からのファイルを含める必要があります。すべての操作をcmakeから管理したいのですが、現時点ではcmakeにsrc/c.cppのファイルをコンパイルさせることさえできません。

どんな助けでも、リンクは大歓迎です。

4

2 に答える 2

7

CMake ファイルは、メイン ソース ディレクトリとそのサブディレクトリに配置する必要があります。最も簡単な方法は、 と のすべてのファイルを含むディレクトリに 1 つ作成することCMakeLists.txtです。非常に最小限の例は、次のようになります。srcsrc/srcsrc/test

# CMakeLists.txt in src
project(myExample)
set(myExample_SOURCES
        src/file1.cpp
        src/main.cpp)
add_executable(myExecutable ${myExample_SOURCES})

set(myExample_test_SOURCES
        src/file1.cpp
        test/test_file2.cpp
        test/test_main.cpp)
add_executable(myTestSuite ${myExample_test_SOURCES})

通常、出力ディレクトリは指定されません。これは、さまざまなオプションを使用してさまざまなアクティブ ビルドを並行して作成できるためです。たとえば、1 つのビルドをデバッグ モードで作成し-O0 -g、別のビルドを-O2 -gフラグ付きのリリース モードで作成し、3 つ目のビルドを最適化フラグを使用してリリース モードで作成することができます-O3。すべてのビルドは独自のディレクトリ (例: build-debug、 )build-relにあり build-optます。

出力ディレクトリ(binあなたの場合)を手動で作成し、cmakeこのディレクトリ内でコマンドを呼び出す必要があります。引数として、 main へのパスを指定する必要がありますCMakeLists.txt。つまり、実行するだけです

cmake ../src

あなたが中にいるときbin。これにより、ディレクトリからすべてのファイルが取得さsrcれ、出力がディレクトリに配置されbinます。bin2たとえば、異なるビルド フラグを指定する2 番目の出力ディレクトリを簡単に作成できます。は、そのccmakeための非常に最小限の GUI を提供します。

于 2012-08-09T20:40:11.357 に答える
0

これは私がcmakeexamples.htmlから始めるのに役立ちました

于 2012-08-09T20:36:06.123 に答える