我有这样结构的项目(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"
包含,很奇怪该怎么做才不会报错。
1
Nasei 2021-12-07 17:22:00 +08:00
直接 include "includes.h" 就可以把...
|
2
proxytoworld OP @Nasei 谢谢大佬编译没问题,但是 vscode 会标红提示找不到头文件
|
3
xipuxiaoyehua 2021-12-07 17:47:55 +08:00
@proxytoworld vscode 要设置 include path
|
4
hhjuteman 2021-12-07 17:56:17 +08:00
target_include_directories(PATH) <=> g++ -I${PATH}
如果用的 vscode c++插件,里面应该有 compiler_command.json 相关的选项。 插件根据 compiler command 的数据进行符号索引 推荐使用 clangd |
5
proxytoworld OP @xipuxiaoyehua OK 了 谢谢大佬
|
6
proxytoworld OP @hhjuteman 我试试
|
7
TimothyT 2021-12-07 22:47:25 +08:00
g++是不是少打了个分隔符? -I ../include
cmake 的话在 target_include_directories 下一行把 INCLUDE_DIRECTORIES 打印出来看看添加成功了没试试 |