基于本教程:http://syskall.com/how-to-roll-out-your-own-javascript-api-with/index.html/
我正试图在mac上编译一个C++程序,但我的C++文件中的includes没有找到。我有以下目录结构:
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,但它仍然显示为未找到。我是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
看看你到底在告诉编译器什么:
#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
吗?
当前,预处理器正在尝试解析#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>
)指定的其他include文件,则第二个选项更有可能起作用。