StrikeBox/cmake/VSHelpers.cmake

34 lines
1.3 KiB
CMake
Raw Normal View History

2018-03-05 11:39:27 -05:00
# Add Visual Studio filters to better organize the code
function(vs_set_filters)
cmake_parse_arguments(VS_SET_FILTERS "" "FILTER_ROOT;BASE_DIR" "SOURCES" ${ARGN})
2018-03-05 11:39:27 -05:00
if(MSVC)
foreach(FILE IN ITEMS ${VS_SET_FILTERS_SOURCES})
2018-03-05 11:39:27 -05:00
# Get the directory of the source file
get_filename_component(PARENT_DIR "${FILE}" DIRECTORY)
# Remove common directory prefix to make the group
if(BASE_DIR STREQUAL "")
string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}" "" GROUP "${PARENT_DIR}")
else()
string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/${VS_SET_FILTERS_BASE_DIR}" "" GROUP "${PARENT_DIR}")
2018-03-05 11:39:27 -05:00
endif()
# Use Windows path separators
2018-03-05 11:39:27 -05:00
string(REPLACE "/" "\\" GROUP "${GROUP}")
# Add to filter
source_group("${VS_SET_FILTERS_FILTER_ROOT}${GROUP}" FILES "${FILE}")
2018-03-05 11:39:27 -05:00
endforeach()
endif()
endfunction()
# Make the Debug and RelWithDebInfo targets use Program Database for Edit and Continue for easier debugging
function(vs_use_edit_and_continue)
if(MSVC)
string(REPLACE "/Zi" "/ZI" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
string(REPLACE "/Zi" "/ZI" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG} PARENT_SCOPE)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} PARENT_SCOPE)
endif()
endfunction()