본문 바로가기

L I N U X

cmake 사용법

OpencCV cross compile 한다고 한참 이 것 저 것 해보다가 기본 적으로 cmake 는 사용할줄 알아야 되겠다는 결론에 도달하게 되었습니다.

http://blog.naver.com/PostView.nhn?blogId=imisehi&logNo=150076922823 

cmake
 
사용법 예제

cmake는 이미 설치되어 있다고 가정한다.

디렉토리는 아래와 같은 상태이다.

 

test, test/Demo, test/Hello 폴더에 각각 CMakeLists.txt파일을 아래 내용대로 생성한다.

 3개의 CMakeLists.txt파일을 생성한다.

test/CMakeLists.txt

# The name of our project is "HELLO". CMakeLists files in this project can

# refer to the root source directory of the project as ${HELLO_SOURCE_DIR} and

# to the root binary directory of the project as ${HELLO_BINARY_DIR}.

cmake_minimum_required (VERSION 2.6)

project (HELLO)

 

# Recurse into the "Hello" and "Demo" subdirectories. This does not actually

# cause another cmake executable to run. The same process will walk through

# the project's entire directory structure.

add_subdirectory (Hello)

add_subdirectory (Demo)

 

test/Hello/CMakeLists.txt

# Create a library called "Hello" which includes the source file "hello.cxx".

# The extension is already found. Any number of sources could be listed here.

add_library (Hello hello.c)

 

test/Demo/CMakeLists.txt

# Make sure the compiler can find include files from our Hello library.

include_directories (${HELLO_SOURCE_DIR}/Hello)

 

# Make sure the linker can find the Hello library once it is built.

link_directories (${HELLO_BINARY_DIR}/Hello)

 

# Add executable called "helloDemo" that is built from the source files

# "demo.cxx" and "demo_b.cxx". The extensions are automatically found.

add_executable (helloDemo demo.c)

 

# Link the executable to the Hello library.

target_link_libraries (helloDemo Hello)

 

test/Demo, test/Hello폴더에 아래와 같은 소스코드를 작성한다.

test/Demo/demo.c

#include<stdio.h>

#include"hello.h"

 

int main()

{

      hello();

      return 0;

}

 

 

test/Hello/hello.h

#include<stdio.h>

 

#ifndef __HELLO_H__

#define __HELLO_H__

 

void hello();

 

#endif

 

 

test/Hello/hello.c

#include"hello.h"

 

void hello()

{

      printf("안녕하세요?\n");

}

 

위와 같이 작성한 후 아래와 같이 cmake를 실행하여 Makefile을 만들고, 만들어진 Makefile을 사용하여 실행파일을 생성한다.

윈도우에서 실행하면 비주얼 스튜디오 프로젝트가 생성되겠지?

이건 안 해봐서 잘 모르겠지만 아마 될 것 같다.

안되면 설정 좀 더 추가하면 되겠지...

 

[myid@localhost test]$ cmake CMakeLists.txt

-- Configuring done

-- Generating done

-- Build files have been written to: /home/myid /test

[myid@localhost test]$ make

[ 50%] Building C object Hello/CMakeFiles/Hello.dir/hello.c.o

Linking C static library libHello.a

[ 50%] Built target Hello

[100%] Building C object Demo/CMakeFiles/helloDemo.dir/demo.c.o

Linking C executable helloDemo

[100%] Built target helloDemo

[myid@localhost test]$ cd Demo/

[myid@localhost Demo]$ ./helloDemo

안녕하세요?

[출처] cmake 사용법 예제|작성자 돌고래꿈

'L I N U X' 카테고리의 다른 글

환경 변수 설정  (0) 2012.02.27
cmake 사용예  (0) 2012.02.24
라이브러리 로딩 - ld.so.conf  (0) 2012.02.22
compile option  (0) 2012.02.21
OpenCV cross compile - arm  (0) 2012.02.15