{{위키데이터 속성 추적}}
{{소프트웨어 정보
|로고=Cmake.svg
|screenshot=Cmake with Clang screenshot.png
| released               = {{시작 날짜와 나이|2000}}
| latest release version = {{wikidata|property|reference|edit|Q1023904|P548=Q2804309|P348}}
| latest release date    = {{시작 날짜와 나이|{{wikidata|qualifier|Q1023904|P548=Q2804309|P348|P577}}}}
| latest preview version = {{wikidata|property|reference|edit|Q1023904|P548=Q51930650|P348}}
| latest preview date    = {{시작 날짜와 나이|{{wikidata|qualifier|Q1023904|P548=Q51930650|P348|P577}}}}
|프로그래밍 언어=[[C++]]<ref>{{웹 인용 |url=http://www.ohloh.net/p/cmake |제목=Ohloh Analysis Summary - CMake |publisher=Ohloh |accessdate=2009-12-25 |archive-date=2014-01-22 |archive-url=https://web.archive.org/web/20140122194726/http://www.ohloh.net/p/cmake |url-status= }}</ref>
|운영체제=[[크로스 플랫폼]]
|라이선스=제3항 [[BSD 라이선스]]
}}
'''CMake'''(Cross Platform Make)는 멀티플랫폼으로 사용할 수 있는 [[make (소프트웨어)|Make]]의 빌드관리시스템을 만들기 위한 오픈소스 프로젝트로 [[키트웨어]]와 [[인사이트 콘솔티엄]]에서 만들었다. 스스로 기존의 Make의 과정을 수행하지는 않고 지정한 운영 체제에 맞는 Make 파일([[마이크로소프트 윈도우]]에서는 솔루션 파일)의 생성 및 관리만을 수행하기 때문에 Meta Make라고도 불리는 [[빌드 자동화]](automation 또는 makemake)시스템이다. 가장 큰 이점은 [[유닉스 계열]] OS 중심이던 기존의 Make의 [[소프트웨어 빌드|빌드]](build) 시스템과는 달리 한번 작성해 두면 유닉스 계열은 물론, 마이크로소프트 윈도우 계열의 프로그래밍 도구도 지원한다는 것이다.

== 기능 ==
* 소프트웨어 빌드에 특화된 언어로 독자적 설정 스크립트를 사용한다.
* [[C (프로그래밍 언어)|C]], [[C++]], [[자바 (프로그래밍 언어)|자바]], [[포트란]]에 대해서는 자체적으로 의존 관계를 분석할 수 있다.
* [[스위그]], [[Qt (툴킷)|Qt]] 지원에 특화되어 있다.
* [[비주얼 스튜디오|마이크로소프트 비주얼 스튜디오]]를 자체적으로 지원한다(6, 7, 7.1, 8.0, 9.0 등).
* [[이클립스]]용 빌드 파일을 생성할 수 있다.
* [[타임스탬프]]를 통해 파일 내용의 변화를 알아낼 수 있다.
* [[평행 빌드]]를 할 수 있다.
* [[크로스 컴파일]]을 할 수 있다.
* 다양한 플랫폼을 지원한다.
** [[유닉스 계열]] 운영 체제([[리눅스]], [[BSD/OS|BSD]]계 운영 체제 등)
** [[OS X]]
** [[윈도우 95]]/[[윈도우 98|98]]/[[윈도우 NT|NT]]/[[윈도우 2000|2000]]/[[윈도우 XP|XP]]와 [[MinGW|MinGW/MSYS]]
* 내부 모듈인 CTest로 [[유닛 테스트]]를 수행할 수 있다.
* 내부 모듈인 CPack으로 자동 인스톨러를 만들 수 있다.

== CMake 파일 예제 ==

<syntaxhighlight lang="cmake">
if (${UNIX})
  set (DESKTOP $ENV{HOME})
else()
  set (DESKTOP $ENV{USERPROFILE}/Desktop)
endif()

set (PRJ ${DESKTOP}/common/svn )
set (FILELIST ${PRJ}/src/source.txt )

message(STATUS "CMAKE_GENERATOR : ${CMAKE_GENERATOR}")
message(STATUS "DESKTOP : ${DESKTOP}")
message(STATUS "PRJ : ${PRJ}")
message(STATUS "FILELIST : ${FILELIST}")
message(STATUS "SYSTEM_NAME : ${CMAKE_SYSTEM_NAME}")

project(project_name)

include_directories(
  ${PRJ}/src
  ${PRJ}/includes
)

# Load SRC Variable from file
file(READ ${FILELIST} SRC)
string(REGEX REPLACE "#.*$" "" SRC ${SRC})
string(REPLACE "\n" ";" SRC ${SRC})

add_executable(${PROJECT_NAME} ${SRC} )

foreach (f ${SRC})
  set_source_files_properties(${f} PROPERTIES LANGUAGE       CXX)
endforeach(f)

if (${WIN32})
  link_directories(
  )

  add_definitions(
    -DDEFINE1
  )

  target_link_libraries(
    ${PROJECT_NAME}
    wsock32.lib
  )
endif()
</syntaxhighlight>

== CMake를 채택한 프로젝트 ==
* [[KDE]](4판부터)
* [[LMMS]]
* [[MySQL]]([[마이크로소프트 윈도우]], [[리눅스]])
* [[OpenLieroX]]
* [[OpenSceneGraph]]
* [[OpenSourceComputerVision]]
* [[SuperTux]]
* [[VTK]]
* [[뮤즈스코어]]
* [[스크리버스]]
* [[스텔라리움]]
* [[퀀텀 GIS]]
* [[포플러 (소프트웨어)|포플러]] - Autoconf와 CMake를 함께 지원
* [[헷지워즈]]
* [[Https://en.wikipedia.org/wiki/GNU Radio|GNU Radio]]

== 같이 보기 ==
{{위키공용분류}}
* [[Autoconf]]
* [[qmake]]

== 참조 ==
<references />

== 외부 링크 ==
* {{언어링크|en}} [http://www.cmake.org/ CMake 공식 사이트]

{{토막글|소프트웨어}}

[[분류:빌드 자동화]]
[[분류:컴파일 도구]]
[[분류:BSD 라이선스 소프트웨어]]