Open Source/cmake

[cmake] 2. Hello with two files.

소혼 2011. 4. 12. 23:58
반응형
[목차로 이동]

큰 프로젝트를 수행할 때 파일을 하나로 수행하는 경우는 흔하지 않습니다. 그리고 파일 하나를 위해서는 굳이 빌드 스크립트가 필요하지 않겠죠.

한개 이상의 파일을 이용하는 간단한 예제를 만들어보고자 합니다.
name.cpp를 추가하고 앞의 hello.cpp를 조금 수정해 보았습니다.
# cat name.cpp 
char* name()
{
    return "bunhere";
}

# cat hello.cpp 
#include <iostream>

char* name();

int main()
{
    std::cout << "hello, " << name() << std::endl;
    return 0;
}

좀 사기성 짙은 코드입니다만 동작에는 문제가 없습니다.
g++로 컴파일해보자면,
# g++ -c hello.cpp
# g++ -c name.cpp
# g++ -o hello_name hello.o name.o


hello_name이 만들어집니다. 

CMake를 써보겠습니다.
새로 만든 CMakeLists.txt를 보겠습니다.
# cat CMakeLists.txt
PROJECT(hello)
ADD_EXECUTABLE(hello hello.cpp;name.cpp) 


파일이 들어가는 부분에 두개의 파일을 ;으로 구분해서 적었습니다.
CMake에서는 리스트가 좀 특이하게 처리되는 것 같습니다. 간단히 ;로 구분된 값이면 리스트라고 생각하시면 됩니다.
그런데 이런 방법으로 파일이 좀 늘어나면 ADD_EXECUTABLE이 길어지고 보기 안좋을 것 같습니다.
변수를 하나 추가해서 코드를 좀 늘려보겠습니다(?). 

# cat CMakeLists.txt 
PROJECT(hello)

SET (SRCS
    hello.cpp
    name.cpp
)
ADD_EXECUTABLE(hello ${SRCS})

SRCS라는 변수를 추가하여 두개의 문자열(hello.cpp, name.cpp)를 넣습니다. 따라서 SRCS는 리스트 변수가 될 것입니다.
ADD_EXECUTABLE에는 이 SRCS 변수를 대입합니다. 이 때 ${...}를 사용하여 변수의 값을 얻어올 수 있습니다.

결과는 앞에 실행된 것과 동일합니다.
 
반응형

'Open Source > cmake' 카테고리의 다른 글

[번역] CMake FAQ  (0) 2011.08.18
[CMAKE] File 다루기  (0) 2011.05.30
[cmake] 목차  (0) 2011.04.12
[cmake] 2. Hello  (0) 2011.04.12
CMake 소개  (0) 2011.04.07