mirror of
https://github.com/neovim/neovim
synced 2025-07-15 16:51:49 +00:00
Problem: RelWithDebInfo generates redundant flags: Compilation: /usr/bin/cc -O2 -g -Og -g The `CMAKE_C_FLAGS_RELWITHDEBINFO` variable is being modified in a way that caused duplicate `-Og` and `-g` flags to be added. The resulting flags were `-O2 -g -Og -g`. - `-Og` (Optimize for debugging) and `-O2` (Optimize for performance) are different optimization levels. We can't use both at once. - The duplicate `-g` flag is redundant and no effect. multiple -O flags has no effect for code, just redundant. > If you use multiple -O options, with or without level numbers, the last such option is the one that is effective. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html Solution: Adjust the flags to use the more appropriate `-O2 -g`. Compilation: /usr/bin/cc -O2 -g BEFORE: ``` :verbose version NVIM v0.11.0-dev-1443+ge00cd1ab40 Build type: RelWithDebInfo LuaJIT 2.1.1734355927 Compilation: /usr/bin/cc -O2 -g -Og -g -flto -fno-fat-lto-ob jects -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict ... ``` AFTER: ``` :verbose version NVIM v0.11.0-dev-e00cd1ab4-dirty Build type: RelWithDebInfo LuaJIT 2.1.1734355927 Compilation: /usr/bin/cc -O2 -g -flto -fno-fat-lto-objects - Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-protot ... ```
55 lines
1.2 KiB
JSON
55 lines
1.2 KiB
JSON
{
|
|
"version": 3,
|
|
"configurePresets": [
|
|
{
|
|
"name": "base",
|
|
"generator": "Ninja",
|
|
"binaryDir": "${sourceDir}/build",
|
|
"hidden": true
|
|
},
|
|
{
|
|
"name": "default",
|
|
"displayName": "RelWithDebInfo",
|
|
"description": "Enables optimizations (-O2) with debug information",
|
|
"cacheVariables": {
|
|
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
|
|
},
|
|
"inherits": ["base"]
|
|
},
|
|
{
|
|
"name": "debug",
|
|
"displayName": "Debug",
|
|
"description": "Disables optimizations (-O0), enables debug information",
|
|
"cacheVariables": {
|
|
"CMAKE_BUILD_TYPE": "Debug"
|
|
},
|
|
"inherits": ["base"]
|
|
},
|
|
{
|
|
"name": "release",
|
|
"displayName": "Release",
|
|
"description": "Same as RelWithDebInfo, but disables debug information",
|
|
"cacheVariables": {
|
|
"CMAKE_BUILD_TYPE": "Release"
|
|
},
|
|
"inherits": ["base"]
|
|
},
|
|
{
|
|
"name": "iwyu",
|
|
"displayName": "IWYU",
|
|
"description": "Run include-what-you-use",
|
|
"cacheVariables": {
|
|
"ENABLE_IWYU": "ON"
|
|
},
|
|
"inherits": ["base"]
|
|
},
|
|
{
|
|
"name": "ci",
|
|
"cacheVariables": {
|
|
"CI_BUILD": "ON"
|
|
},
|
|
"inherits": ["base"]
|
|
}
|
|
]
|
|
}
|