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