상세 컨텐츠

본문 제목

[CMAKE] set() / configure_file() / include_directories()

cmake

by 빨간눈동자 2021. 11. 2. 17:06

본문

반응형
#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를 사용하여 빌드 및 실행을 한 결과이다. 

 

 

반응형

관련글 더보기