【发布时间】:2021-09-20 10:47:37
【问题描述】:
更新 1:我开始了一个新项目,该项目返回了错误,并创建了一个额外的错误:
C1034: iostream: no include path set
更新 2:我设法通过在我的顶级 CMakeList 中包含以下内容来解决问题
if(WIN32)
include_directories(
"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30037\\include"
"C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.19041.0\\ucrt"
)
link_directories(
"C:\\Program Files (x86)\\Windows Kits\\10\\Lib\\10.0.19041.0\\um\\x64"
"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30037\\lib\\onecore\\x64"
"C:\\Program Files (x86)\\Windows Kits\\10\\Lib\\10.0.19041.0\\ucrt\\x64"
)
endif()
不过,我还不想将此标记为解决方案。因为我发现所有这些额外的精炼对于让一个项目在一个真正应该是安装并开始的事情并且希望找到比复制这个sn-p更好的解决方案的程序中工作是完全不可接受的进入我所有的项目或实际问题。
我昨天安装了VS2019并编译了一个小测试程序,它只是将一个数字写入控制台。
这是我的 main.cpp 文件的内容
#include <iostream>
#include <iomanip> // Included to test whether including other libs did work.
#include "Graphics/window.hpp"
int main()
{
std::cout << "Width: " << std::endl;
std::cout << "Height: " << std::endl;
return 0;
}
昨天它工作得很好,但是当我在包含 GLFW 后打开项目时,它无法找到 iostream 库并显示以下错误:
Error (active) E0135 namespace "std" has no member "endl" Slash.exe (source\Slash.exe) - x64-Debug C:\Users\Daisy\source\repos\CMakeProject1\source\main.cpp 9
Error (active) E0135 namespace "std" has no member "endl" Slash.exe (source\Slash.exe) - x64-Debug C:\Users\Daisy\source\repos\CMakeProject1\source\main.cpp 10
Error (active) E0135 namespace "std" has no member "cout" Slash.exe (source\Slash.exe) - x64-Debug C:\Users\Daisy\source\repos\CMakeProject1\source\main.cpp 9
Error (active) E0135 namespace "std" has no member "cout" Slash.exe (source\Slash.exe) - x64-Debug C:\Users\Daisy\source\repos\CMakeProject1\source\main.cpp 10
Error (active) E1696 cannot open source file "iostream" Slash.exe (source\Slash.exe) - x64-Debug C:\Users\Daisy\source\repos\CMakeProject1\source\main.cpp 1
Error (active) E1696 cannot open source file "iomanip" Slash.exe (source\Slash.exe) - x64-Debug C:\Users\Daisy\source\repos\CMakeProject1\source\main.cpp 2
Error C1083 Cannot open include file: 'iostream': No such file or directory C:\Users\Daisy\source\repos\CMakeProject1\out\build\x64-Debug\CMakeProject1 C:\Users\Daisy\source\repos\CMakeProject1\out\source\main.cpp 1
这里是相关的 CMake 文件
项目根
cmake_minimum_required (VERSION 3.19)
project(Slash)
set(CMAKE_RUNTIME_OUTPUT_DIR ${PROJECT_SOURCE_DIR}/bin)
add_subdirectory(source)
项目根目录/源代码
add_subdirectory(Graphics)
add_executable (${CMAKE_PROJECT_NAME} main.cpp)
target_include_directories(${CMAKE_PROJECT_NAME}
PUBLIC
Graphics/include
)
target_link_libraries(${CMAKE_PROJECT_NAME}
Graphics
)
项目根目录/源代码/图形
add_library(Graphics
${CMAKE_CURRENT_LIST_DIR}/src/window.cpp
)
target_include_directories(Graphics
PUBLIC
${CMAKE_CURRENT_LIST_DIR}/include/Graphics
)
我也尝试过不再包含 GLFW,但这也无济于事。 (以防万一:我通过使用随附的 CMAKE 文件并使用 add_subdirectory() 命令来包含 GLFW。)
我已经手动查看了手动包括标准库,但我无法在我的机器上的任何地方找到它们。而且我发现 CMake 无法再找到文件非常奇怪。
我还尝试在 samae 结果中包含其他标准库,以确保不仅仅是 iostream 给我带来了麻烦。
我正在使用库存 C++ 桌面工作负载,并选择了所有默认组件,以防出现问题。
我之前在尝试使用不同的编译器和构建系统在 Windows 上设置我的 C++ 工具时遇到过类似的问题,所以我认为这只是与 CMake 相关。
提前感谢您的任何建议。
【问题讨论】:
-
“以防万一:我通过使用它附带的 CMAKE 文件并使用...来包含 GLFW” - 不要描述代码。相反,将代码 本身 (
CMakeLists.txt) 添加到问题帖子中。此外,用代码的 textual 表示替换您的代码图像(C++ 之一)。错误消息也是如此。请注意,Stack Overflow 不鼓励将图像用于代码和错误消息。另请参阅How to Ask。 -
错误信息似乎是您的 windows SDK 有问题。
-
公平点。我已经坚持了一段时间,再加上我失败的鼠标垫不允许我选择文本,导致我跳过了正确的格式。我已按照建议更新了问题。
-
我还检查了 Windows SDK。当前安装的版本是“Windows 10 SDK (10.0.19041.0)”。这是 VS 安装程序默认选择的那个。
-
我很遗憾地说,重新启动后它突然决定重新开始工作,而我没有对我的电脑或项目进行任何更改。我希望有更实质性的解决方案,而不是“重新启动并希望最好的。”
标签: c++ visual-studio visual-c++ cmake c++-standard-library