基于C++头文件和CMAGE命令分配输出名称 我有一个C++项目,如下结构: MyProject - app - version.hpp - appmodule.cpp - appmodule.cpp - main.cpp - CMakeLists.txt
版本在version.hpp中定义: //version.hpp 定义主要版本1 定义版本\u小100 定义版本_内部71 为了生成带有版本信息的输出文件名,我将以下内容添加到CMakeLists.txt中: 为了构建项目,我运行 mkdir-p构建 光盘制作 克马克。。 制作 根据上述示例,输出为app_v1_100_71 但是,现在我想根据编译器传递的参数更改版本号 因此,我将version.hpp更改为: //version.hpp在编译时指定不同的版本 如果定义了构建质量保证测试 定义版本0 elif定义的构建阶段 定义主要版本1 其他的 定义主要版本2 恩迪夫 定义版本\u小100 定义版本_内部71 通过这种方式,原始stringREGEX将匹配版本_MAJOR[0-9]*.{ver} 不再适用,因为它无法分析C宏 是否有任何方法来确定cmake应该使用哪个版本 此外,有没有更好的方法来版本化这个项目基于C++头文件和CMAGE命令分配输出名称 我有一个C++项目,如下结构: MyProject - app - version.hpp - appmodule.cpp - appmodule.cpp - main.cpp - CMakeLists.txt,c++,cmake,versioning,conditional-compilation,C++,Cmake,Versioning,Conditional Compilation,版本在version.hpp中定义: //version.hpp 定义主要版本1 定义版本\u小100 定义版本_内部71 为了生成带有版本信息的输出文件名,我将以下内容添加到CMakeLists.txt中: 为了构建项目,我运行 mkdir-p构建 光盘制作 克马克。。 制作 根据上述示例,输出为app_v1_100_71 但是,现在我想根据编译器传递的参数更改版本号 因此,我将version.hpp更改为: //version.hpp在编译时指定不同的版本 如果定义了构建质量保证测试 定义版
谢谢。
< P>我建议另做一个,把版本信息从CGOST转换成C++——而不是相反。 可以使用cGuess的函数替换C++代码中的版本变量,并从源代码Case.Project版本中获得信息。您可以简单地使用您的CMASE版本变量来构建输出文件名。
< P>我推荐另一种方式来做,并将版本信息从CGuSE转换成C++——而不是相反。 可以使用cGuess的函数替换C++代码中的版本变量,并从源代码Case.Project版本中获得信息。然后,您可以简单地使用从您的cmake版本变量构建输出文件名。肯定会起作用,除非使用包含qa版本作为其自身配置的多重配置。…肯定会起作用,除非使用包含qa版本作为其自身配置的多重配置。。。。
# CMakeLists.txt
file(READ "app/version.hpp" ver)
string(REGEX MATCH "VERSION_MAJOR ([0-9]*)" _ ${ver})
set(VERSION_MAJOR ${CMAKE_MATCH_1})
string(REGEX MATCH "VERSION_MINOR ([0-9]*)" _ ${ver})
set(VERSION_MINOR ${CMAKE_MATCH_1})
string(REGEX MATCH "VERSION_INTERNAL ([0-9]*)" _ ${ver})
set(VERSION_INTERNAL ${CMAKE_MATCH_1})
set(MY_PROJECT_APP app_v${VERSION_MAJOR}_${VERSION_MINOR}_${VERSION_INTERNAL})
add_executable(${MY_PROJECT_APP} app/main.cpp)