我有CMakeLists.txt文件,该文件受源代码管理。但是,要进行交叉编译,我需要进行大量的调整,以便-DCMAKE_SYSTEM_PROCESSOR=armhf
等所有选项都不符合命令行限制。为了解决方法,我只是将所有选项添加到根目录中的CMakeLists.txt文件中。他们看起来像
if(TWEAK_PROJECT_XXX)
set(CMAKE_SYSTEM_PROCESSOR armhf CACHE STRING "")
...
endif()
当然我无法对源代码控件进行这些调整。但是,命令行SVN在制作补丁时不允许排除某些文件:
svn diff --diff-cmd=diff -x -U999999 > full.diff
我需要完全差异,所以我不能使用TortoiseSVN GUI来制作它(在GUI,AFAIK中没有这种可能性)。因此我每次都必须手动修改差异以排除CMakeLists.txt的调整。这很不方便。
作为一种解决方案,我正在考虑将调整移动到单独的文件,而不是在源代码控制下(并在SVN中忽略它)并将一些命令行选项传递给CMake以首先处理该文件。这可能吗?怎么样?
答案 0 :(得分:1)
CMake提供加载带有变量及其值的文件,以将其用作缓存的基础 使用这样的缓存文件并通过
加载它cmake -C <cachefile>
文档:cmake.org/cmake/help/v3.6/manual/cmake.1.html
类似地,您可以使用load_cache
,但它不符合您特定情况下的需求。