gpt4 book ai didi

CMake:以用户可以更改的方式设置编译器标志。

转载 作者:行者123 更新时间:2023-12-02 00:05:14 25 4
gpt4 key购买 nike

我正在尝试以用户稍后可以使用 -DCMAKE_CXX_FLAGS_RELEASE="..."和命令行上的类似方式更改的方式为编译器标志设置默认值。

如果我使用:

SET( CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG -DNVALGRIND" )

无法使用命令行或 ccmake 更改标志。

如果我用

SET( CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG -DNVALGRIND" CACHE STRING "" )

根本没有设置标志。

有什么正确的方法可以做到这一点吗?

最佳答案

因此,通过实验,我想通了(某种程度上)。

首先我发现缓存版本不起作用,因为缓存中已经有值。也就是说,如果我在它的末尾应用 FORCE,它就会被设置:

SET( CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG -DNVALGRIND" CACHE STRING "" FORCE )

显然这将不允许用户自己指定标志,使其等同于第一个选项。

解决方法是:

将缓存设置命令放在 cmake 文件的开头(在项目命令之前),以某种方式在 cmake 内部设置它们之前设置值。所以现在它看起来像这样:

SET( CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG -DNVALGRIND" CACHE STRING "" )
SET( CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG -DNVALGRIND" CACHE STRING "" )
...
project( whatever )
...

并且有效。我想如果您使用需要一些不同默认标志的编译器,这将很糟糕。但是无论如何你都不应该自己设置默认值。

我还在想是否有更清洁的方法。

关于CMake:以用户可以更改的方式设置编译器标志。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18802023/

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