2016-10-31 5 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" 

두 가지가 다른 이유는 무엇입니까?

답변

4

에 R 패키지 컴파일이 항상 빌드 작업 디렉토리가된다 src/를 기준으로합니다.

명시 적으로 그 디렉토리 를 추가하려면 당신은

PKG_CXXFLAGS = -I. 

을 추가 할 수 있습니다 그리고 당신은 디렉토리 inst/include/을 추가하려는 경우 당신이 할 필요가 당신은

PKG_CXXFLAGS = -I../inst/include 

을 추가해야 상대 ~ src/. 둘 다 결합 할 수 있습니다.

SeqLib 소스의 경우 : 주변을 이동하거나 필요에 따라 src/Makevars을 조정할 수 있습니다.

+0

완벽! 감사 – Crt

1

모든 공통 컴파일러를 사용하면 포함 폴더를 정의 할 수 있습니다. 여기에 당신이 할 수있는, 당신은 headerFiles, 당신의 폴더를 포함하는 것을 말할 수 있도록 그래서 hello_world는

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

것 또는 당신은

#include "headerFiles/SeqLibCommon.h" 
g에

++ 또는 연타 것 귀하가 임시로 폴더를 포함 정의 할 수 있습니다 그런 식으로 컴파일 :

g++ src/hello_world.cpp -o hello_world -I headerFiles 
관련 문제