c++新手 求问 c++项目头文件检索问题

2021-12-07 17:10:29 +08:00
 proxytoworld

我有这样结构的项目(windows 系统+vscode+cmaketools+mingw)

|-bin
|
|-include|
|	 \includes.h
|
|-src|
|    \main.cc
|    |CmakeLists.txt
|
|-CmakeLists.txt

我在 main.cc 中使用 #include "include\includes.h" 包含头文件

但是我使用在src目录下使用命令g++ -shared -o ../bin/test.exe -I ..include .\main.cc编译时提示include\includes.h不存在

我在根目录的 CmakeLists.txt 中通过add_subdirectory(src)包含 src 的 Cmake File 。 在 src\CmakeLists.txt 使用了如下代码


# 设置 exe 源代码变量


add_library(curldll SHARED dllmain.cc)
target_compile_definitions(curldll PRIVATE EXPORT)
target_include_directories(curldll PRIVATE ../include)

在该项目中使用 cmake 编译,还是提示找不到include\includes.h文件,我只能通过include "..\include\includes.h"来包含头文件

但是我看 GitHub 上面的其他项目都是通过#include "include\includes.h"包含,很奇怪该怎么做才不会报错。

735 次点击
所在节点    问与答
7 条回复
Nasei
2021-12-07 17:22:00 +08:00
直接 include "includes.h" 就可以把...
proxytoworld
2021-12-07 17:42:52 +08:00
@Nasei 谢谢大佬编译没问题,但是 vscode 会标红提示找不到头文件
xipuxiaoyehua
2021-12-07 17:47:55 +08:00
@proxytoworld vscode 要设置 include path
hhjuteman
2021-12-07 17:56:17 +08:00
target_include_directories(PATH) <=> g++ -I${PATH}
如果用的 vscode c++插件,里面应该有 compiler_command.json 相关的选项。

插件根据 compiler command 的数据进行符号索引
推荐使用 clangd
proxytoworld
2021-12-07 18:44:53 +08:00
@xipuxiaoyehua OK 了 谢谢大佬
proxytoworld
2021-12-07 18:45:14 +08:00
@hhjuteman 我试试
TimothyT
2021-12-07 22:47:25 +08:00
g++是不是少打了个分隔符? -I ../include

cmake 的话在 target_include_directories 下一行把 INCLUDE_DIRECTORIES 打印出来看看添加成功了没试试

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/820672

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX