visual-studio - 如何:使用 CMake 构建系统在 Visual Studio 中附加包含 C++ 项目的路径?
问题描述
当离开原始 Arduino IDE 并切换到(例如)Visual Studio Code 时,您可以通过向
c_cpp_properties.json
看起来像这样:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"C:/Users/steven/AppData/Local/Arduino15/packages/**"
],
...
}
],
"version": 4
}
在这里,我添加了 Arduino 头文件的目录,以便 VS Code 能够从 Arduino 空间中找到定义。
如果底层项目是 CMake 项目而不是本机 VS 项目,有没有办法在老大哥 Visual Studio 中做同样的事情?如果它是本机 VS 项目,我可以通过调用项目文件属性页来添加目录。这在 CMake 项目中似乎是不可能的。由于有关代码重构的更复杂的选项(例如,如果您使用 ReSharper++ 或类似工具),让它甚至可以在 VS 中工作会很棒。
更新:现在我将使用这个解决方案:
# ========= Providing intellisense for Arduino =========
if(EXISTS "${ConfigurationsDir}/arduino.ini") # arduino.ini is ignored by git and need to be provided separately per environment
SetConfigurationValuesByFile("${ConfigurationsDir}/arduino.ini") # read config file with Arduino paths and create key/value pairs from ini entries
FILE(GLOB_RECURSE allSourceFiles CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
add_executable(IntellisenseProject EXCLUDE_FROM_ALL ${allSourceFiles}) # exclude this "fake" target from being build
SetHeaderDirectories(ArduinoPackagesHeaderDirs ${ArduinoUserPackagesDir}) # read all directories from Arduino dir and subdirs where header files are located at
SetHeaderDirectories(ArduinoLibrariesHeaderDirs ${ArduinoUserLibrariesDir})
target_include_directories(IntellisenseProject PUBLIC ${ArduinoPackagesHeaderDirs} ${ArduinoLibrariesHeaderDirs} ${AllTargetsIncludeDirs})
endif()
这样我就不需要检查环境设置(gitignore arduino.ini)并且对 Arduino 依赖项具有完整的智能感知。
解决方案
You can still use
include_directories(C:/Users/steven/AppData/Local/Arduino15/packages/)
ref: https://cmake.org/cmake/help/v3.20/command/include_directories.html
But I won't recommend it since your project is now dependent of your machine setup...
You should try to create a FindArduino.cmake our create a Toolchain file IMHO...