Skip to content

Commit

Permalink
CMake: Fix flags appending
Browse files Browse the repository at this point in the history
Also fix console opening on VS debug start
  • Loading branch information
illusion0001 authored Feb 8, 2025
1 parent ec3cb74 commit 1db3497
Showing 1 changed file with 51 additions and 4 deletions.
55 changes: 51 additions & 4 deletions cmake/win32.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,18 @@ set(OPT_DEB
)

message(STATUS "updating options for target: `${PROJECT_NAME}` `Debug` `${OPT_DEB}`")
string(APPEND CMAKE_C_FLAGS_DEBUG "${OPT_DEB}")
string(APPEND CMAKE_CXX_FLAGS_DEBUG "${OPT_DEB}")

foreach (link_line ${OPT_DEB})
string(APPEND CMAKE_C_FLAGS_DEBUG " \"${link_line}\" ")
string(APPEND CMAKE_CXX_FLAGS_DEBUG " \"${link_line}\" ")
endforeach(link_line)

message(STATUS "updated options for target: `${PROJECT_NAME}` `Debug` `${OPT_DEB}`")

set(OPT_REL
# "" # hack for visual studio??
"/O1" # Create size code
"/Gy" # Function-level linking
"/Ob1" # Inline Function expansion (Only __inline (/Ob1))
"/Os" # Favor size code
"/Oi" # Generate intrinsic functions
Expand All @@ -34,8 +40,49 @@ set(OPT_REL
)

message(STATUS "updating options for target: `${PROJECT_NAME}` `RelWithDebInfo` `${OPT_REL}`")
string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO " ${OPT_REL}")
string(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " ${OPT_REL}")

foreach (link_line ${OPT_REL})
string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO " \"${link_line}\" ")
string(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " \"${link_line}\" ")
endforeach(link_line)

message(STATUS "updated options for target: `${PROJECT_NAME}` `RelWithDebInfo` `${OPT_REL}`")

set(LINK_FLAGS
"/SUBSYSTEM:WINDOWS" # Prevents Visual Studio from starting console on debug start
)

# appending this on its own doesn't work
set(LINK_REL
"/OPT:REF,ICF" # Link optimizations
"/INCREMENTAL:NO" # Incremental linking
"/LTCG" # Link-time code generation
"${LINK_FLAGS}"
)

message(STATUS "Before RelDebInfo Linker flag: ${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO}")

# turns out you have to set them in one line
# so here you go
foreach (link_line ${LINK_REL})
string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO " \"${link_line}\" ")
endforeach(link_line)

message(STATUS "After RelDebInfo Linker flag: ${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO}")

set(LINK_DEB
"${LINK_FLAGS}"
)

message(STATUS "Before Debug Linker flag: ${CMAKE_SHARED_LINKER_FLAGS_DEBUG}")

# turns out you have to set them in one line
# so here you go
foreach (link_line ${LINK_DEB})
string(APPEND CMAKE_SHARED_LINKER_FLAGS_DEBUG " \"${link_line}\" ")
endforeach(link_line)

message(STATUS "After Debug Linker flag: ${CMAKE_SHARED_LINKER_FLAGS_DEBUG}")

ADD_DEFINITIONS(-DPROJECT_NAME="${PROJECT_NAME}")
ADD_DEFINITIONS(-D_PROJECT_NAME=L"${PROJECT_NAME}")

0 comments on commit 1db3497

Please sign in to comment.