Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

cmake ExternalProject cache overwritten

Tags:

cmake

Hello I'm facing a problem regarding CMake and External Projects.

I set a compiler and some flags via CMAKE_CACHE_ARGS and/or CMAKE_ARGS this works the first time I run make but on any subsequent call the CMake Cache of the external project is rebuild (deleted) and the flags are not set accordingly to the flags I specified! So I wonder is there any workaround/way to specify the compiler only once to prevent rebuilding of the cache?

Following is a very basic test project which downloads and compiles GTest, first call to make compiles with Clang++ and the given flags, any following call to make will cause the CMake Cache to be rebuild without the proper flags being set!

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
    )
like image 409
clentfort Avatar asked Feb 02 '26 05:02

clentfort


1 Answers

I had the same problem, but with a different setup. Although this answer does not seem to apply to your setup it might be helpful for someone else.

In my case the issue was declaring the project with:

project(test LANGUAGES C)

The external project was a C++ project. Adding CXX to languages (or removing the option altogether, since C CXX is the default) solved the problem for me.

like image 93
Martin Kröning Avatar answered Feb 05 '26 04:02

Martin Kröning