GCCでコンパイルされたプロジェクトでは、
g++
でコンパイルされ、1つのネストされたライブラリはgcc
でコンパイルされます。CMakeでは、一般的に "out of source"ビルド を行うことをお勧めします。あなたのプロジェクトのルートにあなたのCMakeLists.txt
を作成してください。それからあなたのプロジェクトのルートから:
mkdir Release
cd Release
cmake -DCMAKE_BUILD_TYPE=Release ..
make
そしてDebug
の場合(やはりプロジェクトのルートから):
mkdir Debug
cd Debug
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
Release
/Debug
はあなたのコンパイラに適切なフラグを追加します。 RelWithDebInfo
とMinSizeRel
のビルド設定もあります。
CMakeLists.txt
およびCMAKE_C_FLAGS_DEBUG
変数を介して、CMAKE_C_FLAGS_RELEASE
のフラグを変更または追加することができます。
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall")
詳細については CMAKE_BUILD_TYPE を参照してください。
あなたの3番目の質問に関しては、私はあなたが正確に何を求めているのかわかりません。 CMakeはあなたの異なるソースファイルに適したコンパイラを自動的に検出して使用するはずです。
デバッグ/リリースフラグについては、CMAKE_BUILD_TYPE
変数を参照してください(cmake -DCMAKE_BUILD_TYPE=value
として渡します)。 Release
、Debug
などの値を取ります。
http://cmake.org/Wiki/CMake_Useful_Variables#Compilers_and_Tools
cmakeは拡張子を使用してコンパイラを選択するので、ファイルには.cという名前を付けます。
これをさまざまな設定で上書きすることができます。
例えば:
set_source_files_properties(yourfile.c LANGUAGE CXX)
G ++で.cファイルをコンパイルします。上記のリンクは、C/C++用の特定のコンパイラを選択する方法も示しています。
CMAKE_CXX_FLAGS
文字列を直接操作する代わりに(これはstring(APPEND CMAKE_CXX_FLAGS_DEBUG " -g3")
btwを使ってもっとうまくできます)、add_compiler_options
を使うことができます。
add_compile_options(
"-Wall" "-Wpedantic" "-Wextra" "-fexceptions"
"$<$<CONFIG:DEBUG>:-O0;-g3;-ggdb>"
)
これは指定された警告をすべてのビルドタイプに追加しますが、指定されたデバッグフラグのみをDEBUG
ビルドに追加します。コンパイルオプションはCMakeリストとして保存されることに注意してください。これは、その要素をセミコロン;
で区切った単なる文字列です。
// CMakeLists.txt:release
set(CMAKE_CONFIGURATION_TYPES "Release" CACHE STRING "" FORCE)
// CMakeLists.txt:デバッグ
set(CMAKE_CONFIGURATION_TYPES "Debug" CACHE STRING "" FORCE)
再使用せずに別の構成を作成する場合は、cmake --build {$PWD} --config <cfg>
を実行することもできます。マルチ構成ツールの場合は、<cfg>
exを選択します。デバッグ、リリース、MinSizeRel、RelWithDebInfo
https://cmake.org/cmake/help/v2.8.11/cmake.html#opt%3a--builddir