26

クロスコンパイルにはcmakeを使用しています。私のツールチェーンファイルには次の行があります

SET(CMAKE_C_FLAGS "-std=gnu99")

この変数は CMakeLists.txt に再度設定されません。

実行するとcmake -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake ..、このフラグは無視されます。

さらに詳しく説明すると、 の行はflags.cmakeC_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")
4

2 に答える 2

24

行を置き換えることで一時的な解決策を見つけました

SET(CMAKE_C_FLAGS "-std=gnu99")

SET(CMAKE_C_FLAGS "-std=gnu99" CACHE STRING "" FORCE)
于 2012-07-18T07:49:46.507 に答える