![如何确保我的代码在 gnu make 中使用 -o3 进行编译?](https://linux22.com/image/1455625/%E5%A6%82%E4%BD%95%E7%A1%AE%E4%BF%9D%E6%88%91%E7%9A%84%E4%BB%A3%E7%A0%81%E5%9C%A8%20gnu%20make%20%E4%B8%AD%E4%BD%BF%E7%94%A8%20-o3%20%E8%BF%9B%E8%A1%8C%E7%BC%96%E8%AF%91%EF%BC%9F.png)
我有一个巨大的 Makefile,正在处理并试图精简它。目前,它被设计用于构建几个不同的程序,其中包含大量我永远不会使用的选项。我希望首先确保代码以正确的方式构建,然后删除我不需要的部分。
首先,我想确保我的代码使用 -o3 进行编译(大量优化),但我不确定是否如此。我看到 Makefile 中有一段内容:
ifeq ($(findstring $(CFLAGS),-O),)
CFLAGS_COMMON += -O3
# only add -O3 if no -O flag is in $(CFLAGS)
endif
这提供了一些安慰...但是难道不需要有一个 -O 标志来编译它,否定 if 语句吗?
以下是整个 Makefile: http://textuploader.com/bj98
答案1
LDFLAGS ?=
CFLAGS ?=
CXXFLAGS ?=
CPPFLAGS ?=
LIBS ?=
RADIANT_ABOUTMSG ?= Custom build
我要补充-O3
的是CPPFLAGS
,CXXFLAGS
和CFLAGS
。但是:
这只会更改项目已更改文件的代码。要确保所有文件都已重新编译,请先执行此操作make clean
。但是:
这不保证外部链接文件(例如库)。这些文件通常是不是编译-O3
。如果你想确保它们是正确的,你还必须重新编译所有库(不要忘记更改它们的所有 Makefile!)。并且。如果这些文件依赖于其他库(它们可能确实如此),你也必须重新编译它们。