我通常在我的项目中有一个策略,永远不会在超过80行的文本文件中创建行,因此它们可以在各种编辑器中轻松编辑(你知道这笔交易).但是使用CMake我遇到的问题是我不知道如何将一个简单的字符串拆分成多行来避免一条巨大的线.考虑这个基本代码:
set(MYPROJ_VERSION_MAJOR "1")
set(MYPROJ_VERSION_MINOR "0")
set(MYPROJ_VERSION_PATCH "0")
set(MYPROJ_VERSION_EXTRA "rc1")
set(MYPROJ_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}-${VERSION_EXTRA}")
Run Code Online (Sandbox Code Playgroud)
它已经超过了80行限制.那么如何将CMake中的一行分成多行而不会变得冗长(多个list(APPEND ...)等)?
我想在CMakeLists.txt中有消息功能,输出彩色文本.也许逃脱序列.例如
message("\x1b[31m;This text must be in red")
Run Code Online (Sandbox Code Playgroud)
它不起作用.我明白了
cmake代码中的语法错误
Run Code Online (Sandbox Code Playgroud)/home/taurus/cmakecolor/CMakeLists.txt:1解析字符串时
Run Code Online (Sandbox Code Playgroud)\x1b[31m;This text must be in red无效的转义序列\ x
在 make 文件中执行任何目标之前,我需要创建以下始终过时的文件:${CMAKE_BINARY_DIR}/version.hpp.in 。文件内容如下:
#define RELEASE_VERSION "${RELEASE}"
#define MAJOR_VERSION "${MAJOR}"
#define MINOR_VERSION "${MINOR}"
#define PATCH_VERSION "${PATCH}"
#define REVISION "${REVISION}"
#define SVNPATH "$ {SVNPATH}”
我的 CMake 文件中有以下代码段,但它仅在运行cmake命令后才执行:
FILE(WRITE ${CMAKE_BINARY_DIR}/version.hpp.in
"#define RELEASE_VERSION \"${RELEASE}\"\n"
"#define MAJOR_VERSION \"${MAJOR}\"\n"
"#define MINOR_VERSION \"${MINOR}\"\n"
"#define PATCH_VERSION \"${PATCH}\"\n"
"#define REVISION \"${REVISION}\"\n"
"#define SVNPATH \"${SVNPATH}\"\n"
)
Run Code Online (Sandbox Code Playgroud)
我想version.hpp.in每次运行make命令时生成文件。我怎样才能做到这一点?