[解決済み] プロジェクトでCMAKE_CXX_FLAGSを変更する
2022-02-09 05:55:23
質問
CMakeLists.txtに以下のような内容があります。
project( Matfile )
SET ( CMAKE_CXX_FLAGS "-std=c++0x" )
set ( SOURCES
"foo.cpp"
"bar.cpp"
)
add_library(
Matfile
${SOURCES}
)
ご想像の通り、私がやりたいことは、-std=c++0xというフラグを使ってC++ソースをコンパイルすることです(私はgccを使っているので、C++11の機能が必要なのです)。残念ながら、これはうまくいきません。cmake を使って makefile を生成すると、CMAKE_CXX_FLAGS という変数が完全に無効になってしまうのです。
この変数をプロジェクトファイルに設定するにはどうしたらよいでしょうか。
非常に愚かな質問のようですが、私はこれを理解するために2時間以上を費やしたところです。
どのように解決するのですか?
最も簡単な解決策は
add_compile_options()
バージョン 2.8.12 以降を使用している場合。
それ以前のバージョンでは、"abuse"が可能です。
add_definitions()
. これは、add -D フラグのためだけのものですが、他のどのようなコンパイラフラグでも動作します。しかし、そのような使い方は想定しておらず、将来のバージョンで壊れる可能性があると思います。
add_compile_options(-std=c++0x) # CMake 2.8.12 or newer
または
add_definitions(-std=c++0x) # CMake 2.8.11 or older
CMake 3.3 からは、このフラグを特定の言語のみに適用させることもできます(例:C または C++ のみ)。奇妙なジェネレーター式の構文を使用してください。
add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-std=c++14> $<$<COMPILE_LANGUAGE:C>:-std=c99>)
しかし、これは Visual Studio のジェネレーターでは動作しません。 そのため、Make/Ninjaジェネレータにのみ使用するか、または ターゲット_コンパイル_オプション() を使用して、ターゲットごとに設定します。
関連
-
[解決済み] CMakeは "make uninstall "をサポートしていますか?
-
[解決済み] プロジェクトでCMAKE_CXX_FLAGSを変更する
-
[解決済み] CMake でモジュールディレクトリが見つからない
-
[解決済み] CMAKE_SOURCE_DIRはどこですか?
-
[解決済み] cmakeのincludeコマンドにおいて、ファイルとモジュールの違いは何ですか?
-
[解決済み] cmake --verbose=1` は冗長なcmake出力をしますが、`cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON` はそうならないのはなぜですか?
-
[解決済み] .cmakeファイルの目的は何ですか?
-
[解決済み】CMakeをGNU Makeと一緒に使う:正確なコマンドを見るにはどうすればいい?
-
[解決済み】CMakeでGCCとClang/LLVMの切り替えを行う。
-
[解決済み】CMakeは具体的にどのように動作するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】CMakeでソースディレクトリからバイナリディレクトリにファイルをコピーする
-
[解決済み] CMakeは "make uninstall "をサポートしていますか?
-
[解決済み] プロジェクトでCMAKE_CXX_FLAGSを変更する
-
[解決済み] CMake の add_definitions が動作しないようです。
-
[解決済み] CMake でモジュールディレクトリが見つからない
-
[解決済み] cmakeのincludeコマンドにおいて、ファイルとモジュールの違いは何ですか?
-
[解決済み】CMakeでC++ 11を有効にするには?
-
[解決済み】CMakeでGCCとClang/LLVMの切り替えを行う。
-
[解決済み】CMake:スクリプト内のアクセス可能なすべての変数を出力する
-
[解決済み】変数を設定・使用するCMakeの構文とは?