2012-06-02 4 views
3

나는 expat에 의존하는 프로젝트를 가지고 있습니다. 내 문제는 내가 expat에 연결할 수 없다는 것이다. 우분투 (데비안 환경)를 사용하고 cmake를 사용하여 makefile을 빌드해야합니다. 내가 개별적으로이 .c-파일과 링크를 이동하는 것을 시도했다어떻게 expat을 프로젝트에 링크합니까?

include_directories(
... 
${CMAKE_SOURCE_DIR}/expat-2.1.0/lib 
... 
) 

:

add_executable(${PROJECT_NAME} 
... 
src/xmlrole.c 
src/xmltok.c 
src/xmltok_impl.c 
src/xmltok_ns.c 
src/xmlparse.c 
... 
) 

I've 내 CMakeLists.txt 내부 그것에 소스와 링크를 다운로드하려고

xmlparse.c의 링크 할 때 작동하지 않지만 오류가 발생합니다.

누군가가 CMakeLists.txt 파일에서 라이브러리를 올바르게 연결하는 방법을 알고 있습니까? 소스 코드를 다운로드하고 파일 자체에 링크해야합니까 (필자는 작동하지 않습니다)?

"sudo apt-get install expat"를 실행할 때 필요한 소스를 다운로드하거나 ".so - file"에 링크 할 수 있습니까?

답변

4

최신 버전이 필요하지 않은 경우 sudo apt-get install expat을 사용할 수 있습니다.

가장 최근 버전 인 download the source을 추출하십시오. 그 다음 :

cd <expat root> 
mkdir build && cd build 
cmake .. -DCMAKE_INSTALL_PREFIX=/usr (default install path is /usr/local) 
make 
sudo make install 

일단 설치되면 CMake의 FindEXPAT module을 사용하여 찾을 수 있습니다. 그래서 예를 들어

,

cmake_minimum_required(VERSION 2.8 FATAL_ERROR) 
project(MyTest) 
include(FindEXPAT) 
find_package(EXPAT REQUIRED) 
include_directories(${EXPAT_INCLUDE_DIRS}) 
add_executable(${PROJECT_NAME} <list of your source files>) 
target_link_libraries(${PROJECT_NAME} ${EXPAT_LIBRARIES}) 
2

으로는

는 sudo는 apt-get을 해외 거주자를 설치 사용할 수있다.

후 $ PATH에있는 경우 라이브러리에 링크 할 수 있습니다

-lexpat와 메이크있다. 다른 경로에 설치되어있는 경우

당신이해야 할

-L path_of_the_library

-lexpat
관련 문제