LoginSignup
1

More than 3 years have passed since last update.

cmakeでCMAKE_C_FLAGSに設定した値が無視される

Posted at

CMakeLists.txtの中でコンパイルオプションを指定しているつもりなのに、設定が無視される問題に遭遇しました。
コンパイルオプションの指定と、add_subdirectoryコマンドの記載順序の問題でした。

問題

CMakeLists.txtの抜粋
cmake_minimum_required(VERSION 3.12)
project(cmake_01)
set(APP_NAME example)
add_subdirectory(src)

# これらが無視される。なぜ?
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g -O0")

set(CMAKE_CXX_FLAGS ${CMAKE_C_FLAGS})
set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})

make実行(-gしか指定されていない。無視されている?)
/usr/bin/c++   -I../include  -g   -o main.cpp.o -c main.cpp
/usr/bin/cc  -I../include  -g   -o target.c.o   -c target.c

解決

add_subdirectoryコマンドを呼ぶ前にCMAKE_C_FLGASらをセットしておく必要があったみたい。

CMakeLists.txtの抜粋
cmake_minimum_required(VERSION 3.12)
project(cmake_01)
set(APP_NAME example)

# これらが無視される。なぜ?
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g -O0")

set(CMAKE_CXX_FLAGS ${CMAKE_C_FLAGS})
set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})

# add_subdirectoryコマンドの呼出場所が拙かった。
add_subdirectory(src)
make実行(思ったとおりのオプションになった)
/usr/bin/c++   -I../include    -Wall -g -g -O0   -o main.cpp.o -c main.cpp
/usr/bin/cc  -I../include    -Wall -g -g -O0   -o target.c.o   -c target.c

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1