cmake 在 win 中的编译需要使用的一些配置,主要是记录曾经使用情况
Release 生成PDB
1 | set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi") |
cmake原生中的配置
1 | set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") |
CMAKE_CXX_FLAGS_RELEASE
:/MD /O2 /Ob2 /DNDBUG
CMAKE_CXX_FLAGS_RELWITHDEBINFO
:/MD /O2 /Ob1 /DNDBUG /Zi
CMAKE_SHARED_LINKER_FLAGS_RELEASE
:/INCREMENTAL:NO
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
:/debug /INCREMENTAL
/Zi
: 调试信息不包含在对象文件或可执行文件中,这使得这些文件最小/MD
: 动态运行时依赖库, /MT 是静态运行时库/O2
: O2 会尝试更多的寄存器级的优化以及指令级的优化,它会在编译期间占用更多的内存的编译时间/O1
: O1 优化会消耗少得多的编译时间。主要对代码的分支,常量以及表达式等进行优化/O3
: 在 O2 基础上进行更多的优化,例如使用伪寄存器网络,普通函数的内联以及针对循环的更多优化/O0
: 不做任何优化,默认编译选项/OPT:REF
: 清除从未引用的函数和数据/OPT:ICF
: 从链接器中删除冗余的 COMAT/INCREMENTAL
: debug 的情况下默认是这个选项