본문 바로가기

기타9

CMake 문법 CMakeLists 파일은 주석, 명령어, 그리고 공백으로 구성된 간단한 문법을 따른다주석은 # 문자를 사용하여 지시하고 그 문자부터 줄의 끝까지 실행한다명령어는 명령어 이름, 괄호 열기, 공백으로 구분된 전달인자 그리고 닫힌 괄호로 구성된다모든 공백 (공간, 줄 바꿈, 탭)은 구별된 전달인자를 제외하고 무시된다따옴표의 집합 내에 어떤 것은 대부분의 언어에서 전형적인 것처럼 하나의 전달인자로 다루어진다역슬래시는 그것들의 평범한 해석을 방지하기 위한 탈출 문자로 사용된다 2016. 6. 18.
변수와 캐시 엔트리 CMakeLists 파일은 어느 프로그래밍 언어와 같이 변수를 사용한다 변수는 이후의 사용을 위해 값을 저장하는데 사용되고 ON 또는 OFF 또는 (/usr/include /home/foo/include /usr/local/include) 와 같은 리스트를 나타낼 수 있는 단일 변수가 될 수 있다 많은 유용한 변수들은 CMake에 의해 자동적으로 정의된다 CMake에서 변수는 ${VARIABLE} 표기를 사용하여 참조하고, 그것들은 set 명령어의 실행 순서로 정의된다 다음 예제를 생각해보자 # FOO is undefined set (FOO 1) # FOO is now set to 1 set (FOO 0) # FOO is now set to 0 이것은 직관적일수 있지만, 다음 예제를 생각해보자 set (.. 2016. 6. 17.
디렉토리, 발생기, 테스트 그리고 속성 타겟과 소스 파일에 추가하여 당신은 때때로 디렉토리, 발생기, 그리고 테스트와 같은 다른 클래스들과 함께 작동하는 것을 찾을 수 있을 것이다일반적으로 그런 상호작용은 이 객체들로부터 속성을 설정하고 얻는 모양을 갖는다이 클래스들 모두 소스파일과 타겟이 했던 것과 같이 그것들과 연관된 속성을 갖는다속성은 타겟과 같은 구체적인 객체에 부착된 키-값 쌍이다속성에 접근하는 가장 일반적인 방법은 set_property와 get_property 명령어를 통한다이 명령어들은 속성을 갖는 CMake에서 어떤 클래스로부터 속성을 설정하거나 얻을 수 있도록 허락한다타겟과 소스파일에 대한 속성의 일부는 이미 발견되었다 디렉토리에 대한 일부의 유용한 속성은 다음을 포함한다 ADDITIONAL_MAKE_CLEAN_FILES이 .. 2016. 6. 17.
소스 파일 소스 파일 구조는 많은 면에서 타겟과 유사하다그것은 파일 이름, 확장자, 그리고 소스파일에 연관된 일반적 속성의 수를 저장한다타겟과 같이 당신은 set_source_properties와 get_source_file_property, 또는 더 일반적인 버전을 사용하여 속성을 설정하거나 얻어올 수 있다 가장 공통적인 속성은 다음을 포함한다 COMPILE_FLAGS이 소스 파일에 지정하는 컴파일 플래그. 이것은 -D와 -I 플래그를 지정하는 소스를 포함할 수 있다 GENERATEDGENERATED 속성은 소스 파일이 빌드 과정의 부분으로 생성되는 것을 가리킨다이 경우에 CMake는 소스 파일이 CMake가 처음에 실행될 때 존재하지 않을 수 있기 때문에 의존성의 계산에 대해 다르게 다룰 것이다 OBJECT_D.. 2016. 6. 17.
타겟 지금 우리는 CMaake의 전체 과정을 논의했고, cmMakefile 객체에 저장된 핵심 아이템의 일부를 고려하자 아마도 가장 중요한 아이템은 타겟이다타겟은 실행 가능한, 라이브러리, 그리고 CMake에 의해 만들어진 유틸리티를 나타낸다모든 add_library, add_executable, 그리고 add_custom_target 명령어는 타겟을 생성한다예를 들어, 다음 명령어는 소스 파일로 foo1.c와 foo2.c 를 가진 static 라이브러리인 foo 라는 이름을 가진 타겟을 생성한다 add_library (foo STATIC foo1.c foo2.c) foo 라는 이름은 프로젝트에서 그 밖의 모든 곳에 라이브러리 이름으로 사용할 수 있고, CMake는 필요할 때 라이브러리로 이름을 확장하는 방법.. 2016. 6. 17.
주요 구조 이 특징은 CMake의 핵심 개념에 대한 소개를 제공한다 당신이 CMake를 가지고 일을 시작할 때 타겟, 발생기(generator) 그리고 명령어와 같은 개념의 다양성으로 간다CMake에서 이 개념들은 C++ 클래스들로 구현되고 CMake의 명령어들의 대다수가 참조된다이 개념을 이해하는 것은 당신에게 효과적인 CMakeLists 파일을 생성할 필요가 있는 지식을 제공할 것이다 CMake의 클래스에 대해 더 자세히 들어가기 전에, 그것들의 기본 관계를 이해하는 것은 가치있다가장 낮은 레벨에는 소스 파일이 있다 이것은 전형적인 C 또는 C++ 소스 코드 파일에 대응한다소스 파일은 타겟으로 합쳐진다타켓은 전형적으로 실행파일이나 라이브러리이다디릭토리는 소스 트리에서 디렉토리를 나타내고 전형적으로 CMakeLi.. 2016. 6. 17.
CMake를 위한 Hello World 시작하는 사람을 위해 가장 간단한 가능한 CMakeLists 파일을 고려해보자 하나의 소스 파일로부터 실행 가능한 컴파일을 하기 위해 CMakeLists 파일은 두 줄을 포함한다 project (Hello)add_excutable (Hello Hello.c) Hello 를 실행 가능하게 빌드하기 위해 Makefiles 나 Microsoft project 파일을 생성하기 위해 CMake를 실행하면서 설명된 과정을 따른다project 명령어는 결과의 workspace 이름이 무엇이어야 하는지 그리고 add_executable 명령어는 빌드 과정에 실행 가능한 타겟을 추가하는 것을 지시한다이 간단한 예제에 대해 이것이 전부이다만약 당신의 프로젝트가 몇 개의 파일을 필요로 한다면 그것은 또한 매우 쉽고, 단지 .. 2016. 6. 17.
기본 CMake 사용과 문법 CMake를 사용하는 것은 간단하다.빌드 과정은 프로젝트를 구성하는 각 디렉토리 안에서 하나 또는 그 이상의 CMakeLists 파일을 생성하여 제어한다CMakeLists 파일은 CMake의 간단한 언어로 프로젝트 설명을 포함해야 한다언어는 명령어들의 집합으로 표현된다 각 명령어는 CMakeLists 파일에서 나타나는 순서로 실행된다명령어는 다음 형식을 갖는다 command (args ... ) 여기에서 command는 명령어의 이름이고 args는 공백으로 구분된 파라미터의 리스트이다(빈 공백을 포함한 전달인자는 따옴표로 해야 한다)Version 2.2 이후로 대소문자에 상관 없다. 그래서 COMMAND나 Command로 대신 사용해도 된다. 이전 버전은 오직 대문자만 수용한다 CMake는 문자열 또는 .. 2016. 6. 17.
새로운 출발 여기에서 새로운 출발을 해봅시다 글씨가 잘 안 보이네요 ㅋㅋ 2016. 2. 25.