gpt4 book ai didi

cmake ExternalProject缓存被覆盖

转载 作者:行者123 更新时间:2023-12-05 07:58:40 25 4
gpt4 key购买 nike

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

我通过 CMAKE_CACHE_ARGS 和/或 CMAKE_ARGS 设置了一个编译器和一些标志,这在我第一次运行 make 时有效,但在任何后续调用中外部项目的 CMake 缓存被重建(删除)并且标志没有相应地设置为我指定的标志!所以我想知道是否有任何解决方法/方法可以仅指定一次编译器以防止重建缓存?

以下是一个非常基本的测试项目,它下载并编译 GTest,首先调用 make 使用 Clang++ 和给定的标志进行编译,任何后续调用 make 都会导致 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
)

最佳答案

我遇到了同样的问题,但设置不同。尽管此答案似乎不适用于您的设置,但它可能对其他人有帮助。

在我的例子中,问题是通过以下方式声明项目:

project(test LANGUAGES C)

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

关于cmake ExternalProject缓存被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23941499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com