C++ 头文件C++;

C++ 头文件C++;,c++,rcpp,C++,Rcpp,我正在编译过程中,在自定义头文件的路径方面遇到了问题 下面是存储库的结构 temp seqLib headerFiles SeqLibCommon.h src hello_world.cpp 在hello_world.cpp文件中,如下所示: #include <iostream> #include <Rcpp.h> #include "../headerFiles/SeqLibCommon.h" 为什么这两个不同?每个常见的编译器都允许您

我正在编译过程中,在自定义头文件的路径方面遇到了问题

下面是存储库的结构

temp
  seqLib
  headerFiles
    SeqLibCommon.h
  src
    hello_world.cpp
在hello_world.cpp文件中,如下所示:

#include <iostream>
#include <Rcpp.h>
#include "../headerFiles/SeqLibCommon.h"

为什么这两个不同?

每个常见的编译器都允许您定义一个包含文件夹。在这里你可以说,
headerFiles
是你的include文件夹,所以你的hello\u世界就是这样

#include <iostream>
#include <Rcpp.h>
#include "SeqLibCommon.h"
在g++或clang上,您可以这样编译:

g++ src/hello_world.cpp -o hello_world -I headerFiles

每个通用编译器都允许您定义一个include文件夹。在这里你可以说,
headerFiles
是你的include文件夹,所以你的hello\u世界就是这样

#include <iostream>
#include <Rcpp.h>
#include "SeqLibCommon.h"
在g++或clang上,您可以这样编译:

g++ src/hello_world.cpp -o hello_world -I headerFiles

R包编译始终与
src/
相关,后者成为构建的工作目录

如果要显式添加该目录,可以添加

PKG_CXXFLAGS = -I.
如果要添加目录
inst/include/
,则必须添加

PKG_CXXFLAGS = -I../inst/include
因为您需要相对于
src/
。你可以把两者结合起来


至于你的SeqLib源代码:你可以移动东西,或者根据需要调整你的
src/Makevars

一个R包编译总是相对于
src/
,后者成为构建的工作目录

如果要显式添加该目录,可以添加

PKG_CXXFLAGS = -I.
如果要添加目录
inst/include/
,则必须添加

PKG_CXXFLAGS = -I../inst/include
因为您需要相对于
src/
。你可以把两者结合起来


至于你的SeqLib资源:你可以根据需要移动东西,或者调整你的
src/Makevars

完美!谢谢你!谢谢