現在、gccを使用するときにコンパイラフラグを変更するために、ビルドターゲットのCMakeLists.txtを編集します。
if (UNIX)
add_definitions(-Wall)
add_definitions(-g)
#add_definitions(-O2)
endif (UNIX)
これに伴う問題は、gitが変更を取得することです。先に進んでこの変更をコミットすると、-gの代わりに-O2を使用することを期待している他の開発者を苛立たせますが、関係のない変更をプルすると私のバージョンを取得します。通常、この変更をコミットから除外することもできますが、CMakeLists.txtファイルに実際の変更を加えると、コンパイルフラグの個人的な選択を押し上げることを回避する方法はありません。
個々の人がプロジェクトファイル(build /以外のすべて)に触れることなく自分の望みに合わせて変更できるファイル(各作業コピー、したがって各開発者に固有)にファイルを作成するようにCMakeに指示する方法はありますか?当然、build/はgitリポジトリにコミットされていません。
gccの代わりにVisualStudioを使用する場合、IDEはbuild/のVSソリューションファイルを変更するUIを介してこれを処理することに注意してください。問題は、GNUMakefileを使用するときにそのようなメカニズムがないことです。
私たちのプロジェクトは次のように構成されています。
ourproject/
bin/
build/ <-- CMake-generated stuff goes here
lib/
src/
abuildtarget/
anotherbuildtarget/
source.cpp
source.h
CMakeLists.txt