CMake ExternalProject缓存被覆盖。

3

你好,我遇到了关于CMake和外部项目的问题。

我通过CMAKE_CACHE_ARGS和/或CMAKE_ARGS设置了编译器和一些标志,第一次运行make时可以正常工作,但在任何后续调用中,外部项目的CMake Cache将被重建(删除),并且未根据指定的标志进行设置!因此,我想知道是否有任何解决方法/方式只指定一次编译器以防止重建缓存?

以下是一个非常基本的测试项目,它下载并编译GTest,第一次调用make使用Clang++和给定的标志进行编译,任何后续调用都会导致重新构建CMake缓存而没有正确设置标志!

cmake_minimum_version_required(VERSION 2.8.6)
project(test)

include(ExternalProject)
ExternalProject_Add(
    GTest
    SVN_REPOSITORY http://googletest.googlecode.com/svn/tags/release-1.7.0/
    CMAKE_ARGS
    -DCMAKE_CXX_COMPILER:STRING=clang++
    -DCMAKE_CXX_FLAGS:STRING="\"-std=c++1y -stdlib=libc++\""
    INSTALL_COMMAND "" # One can not install GTest so dont do anything here
    LOG_DOWNLOAD 1
    LOG_UPDATE 1
    LOG_CONFIGURE 1
    LOG_BUILD 1
    )
1个回答

0

我曾经遇到过同样的问题,但是我的设置不同。虽然这个答案似乎不适用于你的设置,但它可能对其他人有帮助。

在我的情况下,问题出在使用以下声明项目:

project(test LANGUAGES C)

这个外部项目是一个C++项目。将CXX添加到语言选项中(或者完全删除该选项,因为C CXX是默认值)解决了我的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接