cmake의 또다른 예제 하지만 난 따라 했는데 안되었네요
make install 까지는 무사히 잘 되었는데 실행 파일을 실행 하였으나 에러가 나오네요
아마 기본적인 리눅스 를 몰라서 안되는 것같습니다.
역시 쉬운일 하나 없군....
http://semtle.tistory.com/205#recentTrackback
make install 까지는 무사히 잘 되었는데 실행 파일을 실행 하였으나 에러가 나오네요
아마 기본적인 리눅스 를 몰라서 안되는 것같습니다.
역시 쉬운일 하나 없군....
http://semtle.tistory.com/205#recentTrackback
Autotools에 지친 이들이여 CMake 로 오라!
CMake 는 아주 쉽게, 너무 쉽게 Makefile 을 생성해 주는 오픈소스 빌드 시스템이다.
우선 CMake 가 없다면 설치하고 시작.
$ sudo apt-get install build-essential
$ sudo apt-get install cmake
간단히 예제를 살펴보자. 아래는 소스 디렉토리 구조.
hello 디렉토리 안에 CMakeLists.txt 파일이 있다.
개발자가 빌드를 수행하기 위해 작성하여야 하는 단 하나의 파일.
각각의 파일을 보면,
hello.c
func.c
func.h
뭐 설명이 필요없는 간단한 예제이다.
이제 func.c 파일을 공유라이브러리로 컴파일하고 hello 로 하여금 링크타임때 참조하게 하도록
CMakeLists.txt 파일을 작성해 보자.
CMakeLists.txt
설명이 필요 없을만큼 직관적으로 기술하고 있다.
내장 변수들이 몇가지 있어서 조금 설명하자면,
4 라인에 CMAKE_INSTALL_PREFIX 는,
autotools 사용할때 ./configure PREFIX=/usr 하는것과 같은 맥락.
다들 알겠지만 리눅스에서 소스를 컴파일하고 설치하면 default 로 /usr/local 에 설치된다.
/usr 에 설치되어야 하므로 PREFIX를 재정의 해줘야 한다.
21 ~ 23 라인에서 재정의 된 PREFIX 를 이용하여 DESTINATION 변수가 알아서 설치한다.
17 라인에 SHARED 는,
공유라이브러리로 컴파일하라는 것. 저 자리에 STATIC 이라고 기술해 주면 정적라이브러리가 생성된다.
물론 라이브러리 이름은 myfunc로 지정해 줬으므로 libmyfunc.so(libmyfunc.a) 로 생성된다.
19 라인에서는 링크할 라이브러리 이름을 지정해 주는 것이고..
이제 쉘로 빠져나와
$ cmake .
$ make
$ sudo make install
를 차례대로 실행하면 Makefile을 생성, 컴파일 및 링크를 수행하고 실행파일이 생성된다.
실행파일은 /usr/bin 에, 라이브러리는 /usr/lib 에, 헤더파일은 /usr/include 에 복사된다.
위에 설명한 내용 이외에, 유용한 기능들이 아주 많으므로 궁금하면 아래 링크를 참조하자.
CMake reference: http://www.cmake.org/
'L I N U X' 카테고리의 다른 글
Makefile ?? (0) | 2012.02.28 |
---|---|
환경 변수 설정 (0) | 2012.02.27 |
cmake 사용법 (0) | 2012.02.24 |
라이브러리 로딩 - ld.so.conf (0) | 2012.02.22 |
compile option (0) | 2012.02.21 |