私はCMakeの初心者です。私の環境には以下のようないくつかのプロジェクトがあります。CMake複数のプロジェクト用のビルドディレクトリ
project
|------ CMakeLists.txt (The main Cmake)
|------ ProjectA
| |----- .cpp files
| |----- .hpp files
| |----- CMakeList.txt
|------ ProjectB
| |----- .cpp files
| |----- .hpp files
| |----- CMakeList.txt
|
|------ build
| |----- CMakeStuff
|------ bin
| |---- executables
|------ lib
| |---- libwhatever.a
|------ db
|---- Database stuff
上記のように、すべてのプロジェクトに対して1つのビルドディレクトリを使いたいと思います。好ましくは、build/projectA
、build/ProjectB
のように複数のサブプロジェクトに分割することができます.1つのプロジェクトを再構築する必要がある場合は、build/Project
ファイル全体を削除して、すべてが消えて新しいCmake
が再度ビルドされます。
CMAKEの設定が難しいです。
プロジェクトフォルダのマイオリジナルCMakeList.txt:
cmake_minimum_required(VERSION 3.2.2.)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../bin)
project(projectA)
set(CMAKE_BUILD_TYPE Debug)
file(GLOB SOURCES "*.cpp")
add_library(commonmessage SHARED ${SOURCES})
install(TARGETS commonmessage DESTINATION ../lib)
私の質問は以下のとおりです。
A)私は、単一のビルドディレクトリにcmakeのを実行した場合どうなりますか - その可能性と何だろうです正しいCMAKE設定ですか?
B)ProjectA
のコンパイルには、ProjectB
のファイルが含まれている必要があります - 個々のプロジェクトごとにCMakeLists.txt
に設定するにはどうすればよいですか?
C)最後に、すべてのビルドに単一のメイクファイルが必要です。また、各プロジェクトを個別にビルドするオプションも必要です。 1つのビルドディレクトリで可能でしょうか?
ありがとうございます。
助けてくれてありがとう...私はlibとbinファイルをターゲットフォルダ'make install 'する必要はありませんか? – Mendes
'CMAKE _ * _ OUTPUT_DIRECTORY'変数を使用することは可能ですが、いくつかの設定(DebugとRelease、別のコンパイラなど)を持つ複数のビルドディレクトリがあるかもしれないので、これを行うことはお勧めしません。コンパイル時にファイルを上書きせずにそれらを並行してテストすることができます。なぜあなたのプロジェクトのルートにbin/libが必要ですか? – SirDarius
良い点。 'bin'はすべての実行ファイルがインストールされる場所です。 'lib 'はすべてのライブラリを保持します。 – Mendes