最近私はCMakeの実験を始め、C言語で簡単なHello, World
プログラムを書いています。ここでCMakeがバイナリをどのように置くかについての混乱
は私のディレクトリ構造です:次のように
CMakeLists.txt
src/
CMakeLists.txt
main.cpp
build/
トップレベルCMakeLists.txt読み取り:/ srcの中
#Require at least CMake version 2.8
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
#set up the project name, version and language to compile in
project(HelloWorld)
#tell CMake that we have some source files located in the src directory
add_subdirectory(src)
そしてCMakeLists.txtは読む:
add_executable(helloworld
main.cpp)
install(TARGETS helloworld
RUNTIME DESTINATION ../build)
ここで、これらの2つのスクリプトがmakefileに/ buildディレクトリにhelloworldバイナリを作成させ、 makeを実行した後、/ build/srcにhelloworldバイナリを作成します。
add_executableとinstall関数呼び出しをトップレベルCMakeLists.txtに移動すると、helloworldバイナリは/ buildではなく/ build/srcに配置されます。
私が理解するように、CMakeが呼び出された場所の相対的なフォルダにビルドを置きます。なぜインストールは何もしていないように見えるのですか? さらに、複数の複雑なサブディレクトリがあるとどうなりますか? ファイル(GLOB ...)を避けながらCMakeLists.txtを書き出す方法は?
たとえば、
CMakeLists.txt
/build
/src
/class_A
a.hpp
a.cpp
/class_B
b.hpp
b.cpp
/class_CB
cb.hpp
cb.cpp
/class_D
d.hpp
d.cpp
は、私はちょうど、する.cppファイルの巨大なリストを持っているそれぞれのcppファイルへの相対パスを持つすべて、およびadd_executable(実行ファイル$ {} SOURCE_FILES)にそのリストを渡しますか?または複数のCMakeLists.txtを使用すると簡単な方法がありますか?