サーチ…


前書き

CMakeプロジェクトをC ++プロジェクトで正しく使用すると、プログラマーは実際のプログラム自体にプラットフォームやプログラムのバージョン番号などを集中させることができます。 CMakeを使用すると、実際のプログラムで必要となるかもしれないプラットフォームや他のプリプロセッサタグを簡単にチェックできるプリプロセッサタグを定義することができます。ログシステムで活用できるバージョン番号など。

構文

  • #define preprocessor_name "@ cmake_value @"

備考

すべてのプリプロセッサをconfig.h.inで定義する必要はないことを理解することが重要です。プリプロセッサ・タグは、一般に、プログラマの生活をより容易にするためにのみ使用され、裁量で使用する必要があります。プリプロセッサタグが定義される前に、別のシステムで未定義のビヘイビアが実行される可能性があるので、それを調べる必要があります。

CMakeを使ってC ++のバージョン番号を定義する

可能性は無限大。この概念を使ってビルドシステムからバージョン番号を引き出すことができます。あなたのプロジェクトでそのバージョン番号を使用してください。

CMakeLists.txt

cmake_minimum_required(VERSION 3.8)
project(project_name VERSION "0.0.0")

configure_file(${path to configure file 'config.h.in'}
include_directories(${PROJECT_BINARY_BIN}) // this allows the 'config.h' file to be used throughout the program

...

config.h.in

#ifndef INCLUDE_GUARD
#define INCLUDE_GUARD

#define PROJECT_NAME "@PROJECT_NAME@"
#define PROJECT_VER  "@PROJECT_VERSION@"
#define PROJECT_VER_MAJOR "@PROJECT_VERSION_MAJOR@"
#define PROJECT_VER_MINOR "@PROJECT_VERSION_MINOR@"
#define PTOJECT_VER_PATCH "@PROJECT_VERSION_PATCH@"

#endif // INCLUDE_GUARD

main.cpp

#include <iostream>
#include "config.h"
int main()
{
    std::cout << "project name: " << PROJECT_NAME << " version: " << PROJECT_VER << std::endl;
    return 0;
}

出力

project name: project_name version: 0.0.0


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow