クロスコンパイルにはcmakeを使用しています。私のツールチェーンファイルには次の行があります
SET(CMAKE_C_FLAGS "-std=gnu99")
この変数は CMakeLists.txt に再度設定されません。
実行するとcmake -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake ..
、このフラグは無視されます。
さらに詳しく説明すると、 の行はflags.cmake
空C_FLAGS =
行を示しています。しかし、CMakeOutput.log
私は行を見つけることができますBuild flags: -std=gnu99
。
を 2 回実行するとcmake ..
(ツールチェーン ファイルが指定されているかどうかに関係なく)、この問題が修正されることがわかりました。
しかし、初めてcmakeを実行したときに設定されないのはなぜですか??
編集:MNWEを追加
CMakeLists.txt:
cmake_minimum_required(VERSION 2.6)
project(myproject)
SET(files src/main.c)
add_executable(myexec ${files})
avr.cmake:
SET(CMAKE_SYSTEM_NAME Generic)
SET(CMAKE_C_COMPILER avr-gcc)
SET(CMAKE_C_FLAGS "-std=gnu99")