#CmakeLists.txt
cmake_minimum_required (VERSION 2.6)
project (Tutorial)
# The version number.
set (Tutorial_VERSION_MAJOR 1)
set (Tutorial_VERSION_MINOR 0)
# configure a header file to pass some of the CMake settings
# to the source code
configure_file (
"${PROJECT_SOURCE_DIR}/TutorialConfig.h.in"
"${PROJECT_BINARY_DIR}/TutorialConfig.h"
)
# add the binary tree to the search path for include files
# so that we will find TutorialConfig.h
include_directories("${PROJECT_BINARY_DIR}")
# add the executable
add_executable(Tutorial tutorial.cxx)
set(변수명 변수값) : 변수명에 변수값을 할당한다.
configure_file(input_file output_file) : input_file을 output_file로 변환한다. ( 복사의 개념 )
include_directories( 경로 ) : add_executable() 함수에서 tutorial.cxx 파일을 빌드할 때 필요한 header 파일을 빌드 시 포함한다.
// TutorialConfig.h.in
// the configured options and settings for Tutorial
#define Tutorial_VERSION_MAJOR @Tutorial_VERSION_MAJOR@
#define Tutorial_VERSION_MINOR @Tutorial_VERSION_MINOR@
TutorialConfig.h.in 파일은 configure_file() 함수에 의해 TutorialCOnfig.h 파일로 변환된다.
이때 @Tutorial_VERSION_MAJOR@ 와 @Tutorial_VERSION_MINOR@ 는 CMakeLists.txt에서 set() 함수를 통해 설정한 값으로 변환된다.
//TutorialConfig.h
// the configured options and settings for Tutorial
#define Tutorial_VERSION_MAJOR 1
#define Tutorial_VERSION_MINOR 0
// tutorial.cxx
// A simple program that computes the square root of a number
#include "TutorialConfig.h"
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
if (argc < 2) {
fprintf(stdout, "%s Version %d.%d\n", argv[0], Tutorial_VERSION_MAJOR,
Tutorial_VERSION_MINOR);
fprintf(stdout, "Usage: %s number\n", argv[0]);
return 1;
}
double inputValue = atof(argv[1]);
double outputValue = sqrt(inputValue);
fprintf(stdout, "The square root of %g is %g\n", inputValue, outputValue);
return 0;
}
main.c 파일은 사실 CMAKE와는 관련이 없는 일단 코드이다.
아래와 같이 cmake를 사용하여 빌드 및 실행을 한 결과이다.
[CMAKE] file() (0) | 2021.11.03 |
---|---|
[CMAKE] add_custom_command() (0) | 2021.11.03 |
[CMAKE] include_directories() / install() (0) | 2021.11.02 |
[CMAKE] option() / add_subdirectory() / target_link_libraries() / add_library() (0) | 2021.11.02 |
[CMAKE] cmake_minimum_required() / project() / add_executable() (0) | 2021.10.25 |