この質問がファイルのサンプル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ルール
では代わりに使用されています。のような機能に加えて、チェーンを提供します。私のミニマリズムは次のようになります、Makefile
rules and recipes
functions
function
rules and recipes
Makefile
-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構成/調整
なんらかのデバッグフラグでコンパイルする必要がある場合は、make
like を呼び出すことができます。
make CXXFLAGS=NDEBUG
私は内部変数を考えて、Makefile-rules
そしてCMake-functions
より多くの掘削と比較して、幸運のための良いスタートです。
cmake
これも欲しかった。しかし、私はあなたがそれを見つけることができないと思います。あなたがのようにcmake
振る舞おうとするとmake
、あなたは真剣に自分を狂わせるでしょう。ゼロから始めるのが一番です。ささいなことはmake
にかなり関与してcmake
おり、その逆も同様です。