2016-10-31 11 views
0

私はコンパイル中です。カスタムヘッダーファイルのパスに問題があります。ヘッダーファイルの現在の作業ディレクトリC++

ここにリポジトリの構造を示します。 hello_world.cppファイルで

temp 
    seqLib 
    headerFiles 
    SeqLibCommon.h 
    src 
    hello_world.cpp 

は以下の通りです:

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

これはC++のパッケージで、SeqLibCommon.hへのパスは、このようなとして参照されるだろう、コンパイルして動作しますが:

#include "headerFiles/SeqLibCommon.h" 

2つの違いは何ですか?

答えて

4

Rパッケージのコンパイルは常にビルドの作業ディレクトリになりsrc/に相対的です。

あなたが明示的にそのディレクトリを追加したい場合はあなたは

PKG_CXXFLAGS = -I. 

を追加することができますし、ディレクトリinst/include/を追加したい場合は、あなたがする必要があるとして、あなたは

PKG_CXXFLAGS = -I../inst/include 

を追加する必要があります相対~src/。両方を組み合わせることができます。

SeqLibソースに関しては、物事を移動したり、必要に応じてsrc/Makevarsを調整したりすることができます。

+0

完璧!ありがとう – Crt

1

すべての一般的なコンパイラでは、インクルードフォルダを定義できます。ここでは、あなたのhello_worldが

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

それとも、それはあなたができる、G ++または打ち鳴らすには

#include "headerFiles/SeqLibCommon.h" 

になるので、あなたは一時としてフォルダを含める定義することができるでしょうのでheaderFilesは、あなたのフォルダが含まれていると言うことができますそのようにコンパイル:

g++ src/hello_world.cpp -o hello_world -I headerFiles 
関連する問題