你好,我遇到了关于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
)