1. ホーム
  2. cmake

[解決済み] CMakeでCFLAGSとCXXFLAGSオプションを設定する

2023-01-12 18:52:03

質問

私は Linux 上で動作するコードをデバッグしたいだけなのですが、デバッグビルド ( -O0 -ggdb ). そこで、私はこれらのものを私の CMakeLists.txt :

set(CMAKE_BUILD_TYPE DEBUG)
set(CMAKE_C_FLAGS "-O0 -ggdb")
set(CMAKE_C_FLAGS_DEBUG "-O0 -ggdb")
set(CMAKE_C_FLAGS_RELEASE "-O0 -ggdb")
set(CMAKE_CXX_FLAGS "-O0 -ggdb")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb")
set(CMAKE_CXX_FLAGS_RELEASE "-O0 -ggdb")

コンパイルするときに、verboseをオンにすると make VERBOSE=1 そして、このような出力を確認しました。

... /usr/bin/c++ -D_BSD_SOURCE **-O0 -ggdb** -Wnon-virtual-dtor 
-Wno-long-long -ansi -Wundef -Wcast-align -Wchar-subscripts -Wall -W 
-Wpointer-arith -Wformat-security -fno-exceptions -DQT_NO_EXCEPTIONS 
-fno-check-new -fno-common -Woverloaded-virtual -fno-threadsafe-statics 
-fvisibility=hidden -fvisibility-inlines-hidden **-g -O2** 
-fno-reorder-blocks -fno-schedule-insns -fno-inline ...

どうやらこのコードはコンパイル時に "-g -O2" でコンパイルされているようですが、これは私が欲しいものではありません。どうすれば、強制的に "-O0 -ggdb" のみを使用するように強制するにはどうしたらよいでしょうか?

どのように解決するのですか?

フラグを設定する必要があります。 の後に project コマンドを CMakeLists.txt に追加してください。

また、もしあなたが include(${QT_USE_FILE}) または add_definitions(${QT_DEFINITIONS}) を使用する場合は、これらを含める必要があります。 set というコマンドをQtのコマンドの後に入れるべきです。 もし、その であれば、Qtのフラグにあなたのフラグを追加したいだけかもしれませんので、例えば次のように変更します。

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -ggdb")