3

次のようなディレクトリがあるとします。

dir1
    main.cpp
    dir2
        abc.cpp
    dir3
        def.cpp
        dir4
            ghi.cpp
            jkl.cpp

また、main.cpp には dir2/abc.cpp と dir3/def.cpp が含まれ、def.cpp には dir4/ghi.cpp と dir4/jkl.cpp が含まれているとします。

私の質問は、 dir1/ に1 つのMakefile/CMakeLists.txt を作成し、各ディレクトリに再帰的に移動して *.cpp をコンパイルし、それらを「結合」する方法を教えてください。

私の英語で申し訳ありませんが、私の質問をうまく説明できることを願っています!

ありがとう!

4

3 に答える 3

1

1 つの CMakeLists.txt ファイル:

file(GLOB_RECURSE MAIN_SOURCES "dir1/*.cpp")

add_executable(MainExecutable ${MAIN_SOURCES})
# or
add_library(MyLibrary ${MAIN_SOURCES})

ソースに「参加する」とはどういう意味かわかりません。ここでは、それらをライブラリまたは実行可能ファイルに結合していると想定しています。

于 2010-01-16T01:04:42.960 に答える
1

makefile の場合、dir1/Makefile は次のようにする必要があります。

  • main.o が dir2/abc.o および dir3/def.o に依存していることを宣言します。
  • dir2/abc.o と dir3/def.o の作成方法を宣言する

cmakeに関しては、そのような依存関係を「自動的に」検出するため(バイナリはdir2/abc.oおよびdir3/def.oに依存)、実質的に気にする必要はありません。

于 2009-11-22T19:48:17.983 に答える
0

再帰的な make が良いことかどうかについては、議論の余地があります。比較的最新の賛否両論に関する調査については、このブログ エントリを参照してください。

于 2009-11-22T19:52:57.160 に答える