2011-08-08 2 views
1

qmake와 생성되는 make 파일에 문제가 있습니다. 내 프로그램은 두 개의 라이브러리에 링크되어야합니다. main.pro에 다음과 같이 추가합니다.QMake GCC와 연결 문제

LIBS += -L lib/somelib1/bin -lsomelib1 -L lib/somelib2/bin -lsomelib2 

어떻게 위의 줄을 정렬합니까? qmake가 gcc에게 알려줍니다.

g++ -o programname someobject.o -L lib/somelib1/bin lib/somelib2/bin -lsomelib1 -lsomelib2 

문제는 이렇게 보일 것입니다.

g++ -o programname someobject.o -L lib/somelib1/bin -L lib/somelib2/bin -lsomelib1 
-lsomelib2 

GCC는 다음과 같은 오류를 발생시킵니다.

lib/somelib2/bin: file not recognized: Is a directory 

미리 감사드립니다.

답변

2

당신은 플래그와 인수 사이에 공백을 넣지해야

LIBS += -Llib/somelib1/bin -lsomelib1 -Llib/somelib2/bin -lsomelib2 

또는

LIBS += -L"lib/somelib1/bin" -lsomelib1 -L"lib/somelib2/bin" -lsomelib2 

왜 정적/가져 오기 라이브러리는 "bin"디렉토리? "lib"디렉토리에 .a 개의 파일이 있어야합니다.

+0

환호성. 나는 하나의 라이브러리 만 가지고있는 공간을 가지고 있었고 그렇게 작동했기 때문에 같은 라이브러리가 다른 라이브러리와 겹칠 것이라고 생각했습니다. 정적/가져 오기 설명의 의미가 확실하지 않습니다. – user174084

+0

라이브러리를 빌드/설치하는 "일반적인"/ "표준적인"방법은'someprefix/lib'에 정적 라이브러리 또는 임포트 라이브러리 (그리고 리눅스'.so's)를 놓는 것입니다. 그리고 실행 파일이나 Windows DLL의 경우에는 'someprefix/bin'. 링커에게 첫 번째 디렉토리를 전달하고 PATH에 두 번째 디렉토리를 추가합니다. 난 그냥 DLL에 직접 연결하는 두려워하는 (잘 작동하지만 위에 언급 한 의미에서 이식되지 않습니다, 리눅스에서, 그것은 당신이 일반적으로 다른 디렉토리에있는 라이브러리에 있기 때문에 휴식 것입니다). 그냥 여기에서 nitpicking, 그것이 작동한다면, 그것을 고쳐하지 마십시오! – rubenvb

+0

건배하지만 이것들은 프로젝트에 내장 된 정적 라이브러리입니다. 나는 git 서브 모듈을 사용하여이 라이브러리들을 가져왔다. 이 라이브러리는 또한 qt이며 실행 파일로 컴파일됩니다. – user174084

-1

라이브러리 검색 경로를 QMAKE_LIBDIR 태그 아래에 넣으십시오. 그래서 qmake를 파일 것 :

QMAKE_LIBDIR += lib/somelib1/bin lib/somelib2/bin 
LIBS += -lsomelib1 -lsomelib2