基于本教程: http://syskall.com/how-to-roll-out-your-own-javascript-api-with/index.html/
我正在尝试在mac上编译C ++程序,但是找不到我的C ++文件中的包含。我有以下目录结构:
myProj/
|-- deps/ # third party code
| `-- v8
`-- src/
`-- myProj.cpp
在myProj.cpp中,我有几个包括:
#include <include/v8.h>
所以当我去编译时,我使用以下内容:
g++ src/jsnotify.cpp -Ideps/v8/include
deps / v8 / include目录显然有v8.h,但它仍然显示为未找到。是-I是mac的正确标志?我也无法链接:
g++ src/jsnotify.cpp -Ideps/v8/ -Ldeps/v8/ -lv8 -lpthread -v
-lv8导致:
ld: library not found for -lv8
clang: error: linker command failed with exit code 1
答案 0 :(得分:1)
确切地看一下你告诉编译器的内容:
#include <include/v8.h>
“打开文件”include / v8.h“
g++ src/jsnotify.cpp -Ideps/v8/include
“尝试查找要包含的文件时,请在deps / v8 / include中搜索”
所以,显而易见的问题是:deps/v8/include
是否包含include/v8.h
?换句话说,你有文件deps/v8/include/include/v8.h
吗?
答案 1 :(得分:0)
正如您所知,预处理器正在尝试将#include <include/v8.h>
解析为deps/v8/include/include/v8.h
。
将您的包含更改为:
#include <v8.h>
或者将编译器命令行更改为:
g++ src/jsnotify.cpp -Ideps/v8
这两个选项都可能有效 - 但是如果v8.h还指定了通过在“include”路径前加上指定的其他包含文件(例如#include <include/foo.h>
),则第二个选项更有可能起作用。