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

时间:2014-09-16 18:32:08

标签: c++ macos

基于本教程: 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 

2 个答案:

答案 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>),则第二个选项更有可能起作用。