编译C++mac,查找找不到的头文件



基于本教程: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文件,则第二个选项更有可能起作用。

最新更新