[英]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"
為什么兩者不同?
R軟件包的編譯始終與src/
,后者成為構建的工作目錄。
如果要顯式添加該目錄,則可以添加
PKG_CXXFLAGS = -I.
如果要添加目錄inst/include/
,則必須添加
PKG_CXXFLAGS = -I../inst/include
因為您需要相對於src/
。 您可以將兩者結合。
至於您的SeqLib來源:您可以四處移動內容,或根據需要調整src/Makevars
。
每個常用的編譯器都允許您定義一個include文件夾。 在這里您可以說headerFiles
是您的include文件夾,因此hello_world將是
#include <iostream>
#include <Rcpp.h>
#include "SeqLibCommon.h"
或者您可以將include文件夾定義為temp,這樣
#include "headerFiles/SeqLibCommon.h"
在g ++或clang上,您可以像這樣進行編譯:
g++ src/hello_world.cpp -o hello_world -I headerFiles
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.