この質問がファイルのサンプルMakefile出力に関するものである場合はCMakeList.txt、cmake-backendソースを確認して、そのようなものを1つ生成してくださいMakefile。そうでない場合は、@ Robertoの返信に追加します。詳細を非表示にすることで簡単にしようとしています。
CMake関数
ながらMakeルールとレシピの柔軟なツールであり、CMakeまた、設定機能を追加し抽象化層です。
私のプレーンCMakeLists.txtは次のようになります、
cmake_minimum_required(VERSION 2.8)
project(example)
file(GLOB testapp_SOURCES *.cc)
add_executable(testapp ${testapp_SOURCES})
ビルドをCMake隠すhowことができることに注意してください。what入力と出力のみを指定しました。
にCMakeLists.txtは、で定義されている関数呼び出しのリストが含まれていcmakeます。
(CMake関数)Vs Makeルール
では代わりに使用されています。のような機能に加えて、チェーンを提供します。私のミニマリズムは次のようになります、Makefilerules and recipesfunctionsfunctionrules and recipesMakefile
-include "executable.mk"
TARGETS=testapp.bin
all:${TARGETS}
一方でexecutable.mk、次のようになります、
SOURCES=$(wildcard *.cpp)
OBJECTS=$(SOURCES:.cpp=.o)
DEPS=$(SOURCES:.cpp=.d)
%.bin:$(OBJECTS)
$(CC) $(CFLAGS) -o $@ $^ $(LFLAGS) $(LIBS)
.PHONY: all clean
clean:
$(RM) $(OBJECTS) $(DEPS) $(TARGETS)
-include $(DEPS)
最初から、私はMakefile次のようなものから始めましょう、
all: testapp.bin
testapp.bin:sourcea.o sourcb.o
$(CC) $(CFLAGS) -o $@ $^ $(LFLAGS) $(LIBS)
.PHONY: all clean
clean:
$(RM) $(OBJECTS) testapp.bin
ここからこのスニペットを取得して変更しました。makefile-documentationにあるこのファイルに暗黙のルールがいくつか追加されていることに注意してください。いくつかの暗黙的な変数もここで関連しています。
これMakefileは、ビルドが実行できることrecipeを示す詳細を提供することに注意してくださいhow。executable.mk詳細を1つのファイルに定義して保持するように書き込むことができます。このようにして、前に示したようにmakefileを削減できます。
CMakeおよびの内部変数Make
少し進んでCMake、次のようなコンパイラフラグを設定できます。
set(CMAKE_C_FLAGS "-Wall")
ファイル内のCMakeデフォルト変数の詳細を確認してくださいCMakeCache.txt。CMake上記のコードは、と等価となりMake、次のコード
CFLAGS = -Wall
はのCFLAGS内部変数であることに注意してください。Make同様に、CMAKE_C_FLAGSは内部変数ですCMake。
CMakeにインクルードとライブラリパスを追加する
cmake関数を使用してそれを行うことができます。
target_include_directories(testapp PRIVATE "myincludes")
list(APPEND testapp_LIBRARIES
mytest mylibrarypath
)
target_link_libraries(testapp ${testapp_LIBRARIES})
Makeでのインクルードとライブラリパスの追加との比較
次のような行を追加することで、インクルードとライブラリを追加できます。
INCLUDES += -Imyincludes
LIBS += -Lmylibrarypath -lmytest
上記のこの行は、auto-genツールまたはpkg-configから生成できることに注意してください。(Makefileはauto-configツールに依存していません)
CMake構成/週
通常、関数を使用してconfig.h、auto-configツールと同じようにファイルを生成できconfigure_fileます。カスタム関数を書くより多くのトリックを行うことが可能です。最後に、次のような構成を選択できます。
cmake --build . --config "Release"
option関数を使用して、いくつかの構成可能なオプションを追加することが可能です。
Makefile構成/調整
なんらかのデバッグフラグでコンパイルする必要がある場合は、makelike を呼び出すことができます。
make CXXFLAGS=NDEBUG
私は内部変数を考えて、Makefile-rulesそしてCMake-functionsより多くの掘削と比較して、幸運のための良いスタートです。
cmakeこれも欲しかった。しかし、私はあなたがそれを見つけることができないと思います。あなたがのようにcmake振る舞おうとするとmake、あなたは真剣に自分を狂わせるでしょう。ゼロから始めるのが一番です。ささいなことはmakeにかなり関与してcmakeおり、その逆も同様です。