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 사용법 예제|작성자 돌고래꿈