준호씨의 블로그

C - 기존 Makefile 프로젝트를 CMake 로 컨버팅 하기. 그리고 CLion 본문

개발이야기

C - 기존 Makefile 프로젝트를 CMake 로 컨버팅 하기. 그리고 CLion

준호씨 2018. 7. 31. 23:05
반응형

CMake 를 적용 하면 좋은점?

여러 장점이 있지만 개인적으로 느끼는 최고의 장점은 바로 CLion 에서 잘 지원 한다는 점이다. CMake 설정을 안한 CLion 개발 환경은 그냥 조금 더 좋은 에디터 정도이다. CMake 설정을 하면 IntelliJ 에서 Java 프로그래밍을 할 때의 기분으로 C 나 C++ 개발을 할 수 있게 된다. 요즘 레거시 C 코드 작업을 많이 하고 있는데 CLion 이 없었다면 끔찍 했을 거 같다.

간단하게 시작하자

프로젝트 최상위 디렉토리에 CMakeLists.txt 를 만든다.

project(myproject C)

를 지정하면 디렉토리명으로 나오던 프로젝트명이 내가 지정한 프로젝트명으로 나온다.

하위 디렉토리에와 연결

lib 디렉토리가 있다고 가정하자. lib 디렉토리에도 CMakeLists.txt 를 만들어 준다.

그리고 최상위 디렉토리의 CMakeLists.txt 에 다음과 같이 추가한다.

add_subdirectory(lib)

코드가 있는 디렉토리가 많다면 위와 같은 순서로 계속 작업 해 준다. 디렉토리 안에 CMakeLists.txt 를 만들어 주고, 상위 디렉토리의 CMakeLists.txt 에다가 add_subdirectory 를 계속 추가 해 준다.

만약 lib 디렉토리에 mylib.c, mylib2.c, mylib.h, mylib2.h 파일들이 있다면 lib/CMakeLists.txt 에 다음과 같이 작성해 준다. 파일이 더 많이 있다면 다 추가 해 준다.

set(HEADER_FILES
        mylib.h
        mylib2.h
        )

set(SOURCE_FILES
        mylib.c
        mylib2.c
        )

add_library(mylib ${SOURCE_FILES} ${HEADER_FILES})

이렇게 설정한 파일들은 CLion 이 자동으로 인덱싱 하고, 서로간에 find usage 라던지, 함수의 사용 여부 확인 등을 해 주게 된다.

여담

자세한 CMake 의 사용법은 https://cmake.org/ 에서 찾아 보도록 한다. Makefile 을 직접 작성하는 것 보다 작고 깔끔하게 CMake 설정을 해 주고, cmake 커맨드로 Makefile 파일을 생성하거나 CLion 에서 Makefile 신경 쓰지 않고 C 언어로 프로그램을 개발 할 수 있게 될 것이다.

반응형
Comments