这个问题在这里已有答案:
在cmake中,gcc的默认发布编译器标志是 -O2 -DNDEBUG
. 我希望他们是 -Ofast -NDEBUG
. 而且我希望这对于我在cmake中做的所有项目都是如此,而不会对我项目的任何其他消费者强加这种选择 .
我怎么做?
我可以将它们编辑到该项目的 CMakeLists.txt
文件中 . 但后来我迫使其他人同意我的选择 . 此外,我必须非常小心我是如何做到这一点,以确保我只影响编译器,这是一组有效的标志使用 .
每次签出新树或创建新的构建环境时,我都可以在每个项目上使用 ccmake
. 但是,当我想每次都将标志设置为相同的东西时,这是一个巨大的麻烦 .
有没有办法设置它,所以对我个人来说,各种构建类型的clang和gcc的默认编译器标志是我想要的?
同样,它注意到我有 ccache
和 gcc
. 那没关系 . 但是对于编译器强制使用不同的默认选项可能会很好,但仅限于我个人,而不是任何选择使用我的项目的人 .
这可能吗?
2 回答
我通常在cmakelists.txt中设置编译器标志,方法是在我的构建脚本中添加一个环境变量,然后在cmakelists.txt中引用它 .
然后在我的CMakeLists.txt中,我将有以下行:
然后将参数传递给build.sh,这只是一个bash脚本,根据用户的需要更改MY_CXXFLAGS的内容 . (例如build.sh -b DEVELOP | DEBUG | RELEASE等) .
我目前对这个问题的回答是创建一个包含初始缓存设置的全局
~/.config/Kitware/default.cmake
文件,并使用cmake -C <path to default.cmake> ... remainder of cmake options ...
来运行cmake
.在搞清楚这一过程中,我最初将文件命名为
~/.config/Kitware/CMakeCache.txt
,并发现了一些非常奇怪的东西,似乎是cmake中的一个错误 . 我发布了这个问题:Why does this cmake initial cache file result in such strange errors?