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 /DNDBUGCMAKE_CXX_FLAGS_RELWITHDEBINFO:/MD /O2 /Ob1 /DNDBUG /ZiCMAKE_SHARED_LINKER_FLAGS_RELEASE:/INCREMENTAL:NOCMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:/debug /INCREMENTAL/Zi: 调试信息不包含在对象文件或可执行文件中,这使得这些文件最小/MD: 动态运行时依赖库, /MT 是静态运行时库/O2: O2 会尝试更多的寄存器级的优化以及指令级的优化,它会在编译期间占用更多的内存的编译时间/O1: O1 优化会消耗少得多的编译时间。主要对代码的分支,常量以及表达式等进行优化/O3: 在 O2 基础上进行更多的优化,例如使用伪寄存器网络,普通函数的内联以及针对循环的更多优化/O0: 不做任何优化,默认编译选项/OPT:REF: 清除从未引用的函数和数据/OPT:ICF: 从链接器中删除冗余的 COMAT/INCREMENTAL: debug 的情况下默认是这个选项