当我在NetBeans中构建 Release C ++项目时,它会自动使用-O2选项对其进行配置。
我没有在编译器选项中的任何地方看到我可以覆盖此值。我知道它已设置为-O2,因为我可以在Build窗口中看到它使用的cmdlines:g++ -O2 ...
如果我将-O1添加到"其他选项"在编译器设置中,它不会尊重它,因为cmdline现在变为g++ -O1 -O2 ...
,因此-O2取代了我自己的设置。
那么,我可以在IDE中设置-O优化级别编译设置吗?
如果有任何不同,我在Linux上使用GNU编译工具。
答案 0 :(得分:3)
我终于通过探索更多来找到了解决方案。在OP的对话框中,有一个选项,'开发模式'目前设置为'发布'。那里有许多选项,每个选项对应不同的优化级别和/或调试输出编译标志:
No Flags -c
Debug -c -g
Performance Debug -c -g -O
Test Coverage -g -c
Diagnosable Release -c -g -O2
Release -c -O2
Performance Release -c -O3
虽然似乎没有--O1的选项,但这基本上是您在NetBeans中选择不同优化级别的预期方式。
答案 1 :(得分:1)
请查看nbproject/Makefile-Release.mk
文件。
nekto@ubuntu:~/host/ex/dt-netbeans-samples-cpp-Welcome$ grep -r O2 *
nbproject/Makefile-Release.mk: $(COMPILE.cc) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/welcome.o welcome.cc
看起来-O2
配置中的Release
选项存在是默认的且不可更改的,但是您始终可以创建自己的构建配置(并且您按照我的意愿执行)。
每个构建配置都有自己的nbproject/Makefile-<configuration name>.mk
文件,其中包含以下行:
# CC Compiler Flags
CCFLAGS=-O1
CXXFLAGS=-O1
我已经创建了一个新配置,使其处于活动状态,并在NetBeans属性弹出窗口-O1
- &gt;中设置上面的C++ Compiler
选项。 Additional Options
,我的编译行没有包含-O2
选项。我的Additional Options
小组位于以下位置: