igo*_*uza 2 c++ cmake boost-asio visual-studio-code vcpkg
我可以毫无问题地运行和编译,但是 VSCode Intellisense 说它无法打开源文件 boost/asio.hpp (即使它显然可以)并且一直将其标记为错误,我想知道它为什么这样做它以及如何修复它
我有以下目录:
root/
include/
atr_include.hpp
user_interface.hpp
src/
user_interface.cpp
CMakeList.txt
main.cpp
CMakeList.txt
Run Code Online (Sandbox Code Playgroud)
使用 CMakeList.txt:
root/
include/
atr_include.hpp
user_interface.hpp
src/
user_interface.cpp
CMakeList.txt
main.cpp
CMakeList.txt
Run Code Online (Sandbox Code Playgroud)
src / CMakeList:
#CMake minimum version
cmake_minimum_required(VERSION 3.0.0)
#C++ Standard version
set(CMAKE_CXX_STANDARD 20)
### Searches for the VCPKG
if(DEFINED ENV{VCPKG_ROOT})
set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake")
endif()
project(main LANGUAGES CXX VERSION 0.1.0 )
find_package(Boost COMPONENTS system json REQUIRED)
add_executable(${PROJECT_NAME} main.cpp)
include_directories(include)
link_directories(src)
add_subdirectory(src)
link_libraries(atr_lib)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES})
endif()
if(MSVC OR MSYS OR MINGW)
target_link_libraries(${PROJECT_NAME} ws2_32)
endif()
Run Code Online (Sandbox Code Playgroud)
包含/atr_include.hpp:
add_library(atr_lib STATIC user_interface.cpp)
Run Code Online (Sandbox Code Playgroud)
包括/user_interface.hpp:
#include <boost/asio.hpp>
#include <chrono>
#include <iostream>
#include <math.h>
#include <mutex>
#include <thread>
Run Code Online (Sandbox Code Playgroud)
src/user_interface.cpp:
#include "atr_include.hpp"
class UserInterface
{
private:
public:
};
Run Code Online (Sandbox Code Playgroud)
主要.cpp:
#include <user_interface.hpp>
Run Code Online (Sandbox Code Playgroud)
小智 11
我遇到了同样的问题,它与IntelliSense 配置提供程序项的错误配置有关。
"configurations": [
{
...
"configurationProvider": "ms-vscode.cmake-tools"
...
}
Run Code Online (Sandbox Code Playgroud)
先前的值对应于不再安装的另一个 Cmake 扩展。将值更改为ms-vscode.cmake-tools(我安装了“CMake Tools”扩展)后,IntelliSense 开始正常工作。此外,Boost 标头也正确包含,不会出现 VS Code 中的错误。