头文件 C++ 的当前工作目录
Current Working Directory for Header Files C++
我正在编译过程中,自定义头文件的路径有问题。
这是存储库的结构。
temp
seqLib
headerFiles
SeqLibCommon.h
src
hello_world.cpp
在 hello_world.cpp 文件中如下:
#include <iostream>
#include <Rcpp.h>
#include "../headerFiles/SeqLibCommon.h"
这可以编译并工作,但是在 C++ 包中,SeqLibCommon.h 的路径将被这样引用:
#include "headerFiles/SeqLibCommon.h"
为什么两者不同?
每个常见的编译器都允许您定义一个包含文件夹。在这里你可以说 headerFiles
是你的包含文件夹,所以你的 hello_world 将是
#include <iostream>
#include <Rcpp.h>
#include "SeqLibCommon.h"
或者您可以将 include 文件夹定义为临时文件夹,这样就可以
#include "headerFiles/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
。
我正在编译过程中,自定义头文件的路径有问题。
这是存储库的结构。
temp
seqLib
headerFiles
SeqLibCommon.h
src
hello_world.cpp
在 hello_world.cpp 文件中如下:
#include <iostream>
#include <Rcpp.h>
#include "../headerFiles/SeqLibCommon.h"
这可以编译并工作,但是在 C++ 包中,SeqLibCommon.h 的路径将被这样引用:
#include "headerFiles/SeqLibCommon.h"
为什么两者不同?
每个常见的编译器都允许您定义一个包含文件夹。在这里你可以说 headerFiles
是你的包含文件夹,所以你的 hello_world 将是
#include <iostream>
#include <Rcpp.h>
#include "SeqLibCommon.h"
或者您可以将 include 文件夹定义为临时文件夹,这样就可以
#include "headerFiles/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
。