fra*_*ans 2 variables trace cmake fedora-25
编辑:接受的答案还不能解决我的问题,但是它回答了我所提出的问题-如果您可以通过下面描述的实际问题帮助我,您可以回答此问题。
我有一个CMake项目,该项目使用的框架需要设置变量(即https://github.com/queezythegreat/arduino-cmake,需要使用ARDUINO_SDK_PATH)
奇怪的是,我在命令行上设置了该变量后,它首先具有一个值,但是看起来它会在一段时间后消失。
我在跑
cmake -DARDUINO_SDK_PATH=/path/to/sdk ..
Run Code Online (Sandbox Code Playgroud)
..并收到一条错误消息,告诉我未设置。在我的顶部CMakeLists.txt以及在该框架的检查变量的内部深处输出值,可以得到如下信息:
>>> ARDUINO_SDK_PATH (beginning): '/home/me/project/arduino-1.8.2'
>>> ARDUINO_SDK_PATH (before check): '/home/me/project/arduino-1.8.2'
-- The C compiler identification is GNU 6.2.0
-- The CXX compiler identification is GNU 6.2.0
-- Check for working C compiler: /usr/bin/avr-gcc
>>> ARDUINO_SDK_PATH (before check): ''
CMake Error at /home/me/project/arduino-cmake/cmake/ArduinoToolchain.cmake:84 (message):
Could not find Arduino SDK (set ARDUINO_SDK_PATH)!
Call Stack (most recent call first):
/home/me/project/build/CMakeFiles/3.6.2/CMakeSystem.cmake:6 (include)
/home/me/project/build/CMakeFiles/CMakeTmp/CMakeLists.txt:3 (project)
CMake Error: Internal CMake error, TryCompile configure of cmake failed
-- Configuring incomplete, errors occurred!
See also "/home/me/project/build/CMakeFiles/CMakeOutput.log".
Run Code Online (Sandbox Code Playgroud)
因此,看起来它ARDUINO_SDK_PATH失去了价值。我没有找到分配任何值的实际命令,所以我不知道该如何继续。.现在,我当然可以在所有的CMake项目中添加代码以打印出它的值,ARDUINO_SDK_PATH但是我想知道是否有内置命令跟踪变量值的方法。
我试过了cmake --trace ..,cmake --trace-expand ..但是输出似乎没有帮助。
系统:Fedora 25和CMake 3.6.2
更新资料
感谢弗洛里安(Florian),我已经添加variable_watch(ARDUINO_SDK_PATH)了第一行CMakeLists.txt,现在变量跟踪线(message())如下所示:
CMake Debug Log at arduino-cmake/cmake/ArduinoToolchain.cmake:41 (MESSAGE):
Variable "ARDUINO_SDK_PATH" was accessed using READ_ACCESS with value
"/home/me/project/arduino-1.8.2".
Call Stack (most recent call first):
/usr/share/cmake/Modules/CMakeDetermineSystem.cmake:98 (include)
CMakeLists.txt:10 (project)
>>> ARDUINO_SDK_PATH (before check): /home/me/project/arduino-1.8.2
Run Code Online (Sandbox Code Playgroud)
我大约有30条这样的消息,但是有几条跟踪行,没有值,也没有跟踪消息。
因此,看起来该变量已ARDUINO_SDK_PATH替换为一个新的变量,该变量为空并且不再跟踪。
复制
为了使此行为可再现,我上传了代码:https : //github.com/frans-fuerst/trinket_led
注意:提供的CMakeLists.txt代码尚不包含有用的代码-只是重现错误。
您需要下载Arduino-SDK,将其解压缩并在命令行中提供路径:
tar xvf ~/Downloads/arduino-1.8.2-linux64.tar.xz
git clone https://github.com/frans-fuerst/trinket_led
cd trinket_led
git submodules update --init
mkdir build
cd build
cmake -DARDUINO_SDK_PATH=/path/to/arduino-1.8.2 ..
Run Code Online (Sandbox Code Playgroud)
注意:其中有一个看起来可疑的find_path命令ArduinoToolchain.cmake。但是您可以将其删除,结果相同。
CMakeFiles / CMakeOutput.log
The target system is: Arduino - -
The host system is: Linux - 4.10.12-200.fc25.x86_64+debug - x86_64
Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded.
Compiler: /usr/bin/avr-gcc
Build flags:
Id flags:
The output was:
0
Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out"
The C compiler identification is GNU, found in "/home/frans/_HOME/1704_trinket_led/build/CMakeFiles/3.6.2/CompilerIdC/a.out"
Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded.
Compiler: /usr/bin/avr-g++
Build flags:
Id flags:
The output was:
0
Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out"
The CXX compiler identification is GNU, found in "/home/frans/_HOME/1704_trinket_led/build/CMakeFiles/3.6.2/CompilerIdCXX/a.out"
Run Code Online (Sandbox Code Playgroud)
只需variable_watch(ARDUINO_SDK_PATH)在您的网页顶部放一个CMakeLists.txt。
参考文献