2014-12-30 2 views
5

필자는 유감스럽게도 다른 Linux 배포판에서 다른 위치에있는 헤더 파일을 사용합니다. 내가 어떤 처리기 지시문을 사용할 수 있습니다 생각다른 Linux 배포판에서 다른 헤더 파일 위치를 처리하는 방법은 무엇입니까?

#include <fitsio.h> 

: 여기 아치 리눅스에서

#include <cfitsio/fitsio.h> 

와 : 내 경우

그것은 오픈 수세 12.1 여기에 있습니다 cfitsio에서 fitsio.h입니다 스위치를 만들 수 있습니다. Linux 나 Windows 등에서 테스트 할 때이 방법을 사용할 수 있습니다. 그러나 제가 아치 리눅스에 있는지 테스트 할 때 사용할 수있는 단서가 없습니다.

이 경우를 처리 할 다른 방법이나 전략이 있습니까?

+0

커다란 프로젝트에서 일한 적이 없지만 Linux + Mac/Windows에서 프로젝트를 수행 할 때 항상 전처리 지시문으로 끝납니다. – keyser

답변

7

추가 아치 SUSE과 모두이 헤더를 포함하는 디렉토리에 대한 디렉토리 목록의 경로를 포함 아래의 간단한이, 그리고

#include <fitsio.h> 

을 포함하십시오 :

전자가 존재하지 않는 경우에도
/path/to/header/cfitsio 
/path/to/header 

아치, 컴파일하는 동안 문제가 발생하지 않습니다.

+3

이 방법의 주된 문제점은 더 큰 빌드에서 ** ** ** 문제로 이어질 것이라는 점입니다. 특히 파일 조회가 실패하면 컴파일 속도가 느려집니다. 그러나 이것은 종종 makefile에서 해당 경로를 조건부로 설정하여 해결할 수 있습니다. 여기에있는 아이디어는 모든 소스 파일 대신에 한 곳에서 makefile마다 문제를 해결하는 것입니다. – MSalters

1

일부 라이브러리에는 현재 플랫폼에서 해당 라이브러리에 대해 컴파일 할 때 사용할 올바른 컴파일러 플래그를 출력하는 [libraryname]-config 프로그램이 함께 제공됩니다.

-I/usr/include/ncursesw 
-lncursesw -ltinfo 

C 코드에 #include <curses.h> 데 후 충분하고, 모두 올바르게 컴파일 : Debian

-L/usr/lib -lncursesw 

이것을 예를 들면

, libncurses 'ncursesw5-config --cflags --libsArch에 생산 배포판.

관련 문제