2018-03-05 11:39:27 -05:00
|
|
|
# Add Visual Studio filters to better organize the code
|
2019-02-20 21:38:36 -05:00
|
|
|
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)
|
2019-02-20 21:38:36 -05:00
|
|
|
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()
|
2019-02-20 21:38:36 -05:00
|
|
|
string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/${VS_SET_FILTERS_BASE_DIR}" "" GROUP "${PARENT_DIR}")
|
2018-03-05 11:39:27 -05:00
|
|
|
endif()
|
|
|
|
|
2019-02-20 21:38:36 -05:00
|
|
|
# Use Windows path separators
|
2018-03-05 11:39:27 -05:00
|
|
|
string(REPLACE "/" "\\" GROUP "${GROUP}")
|
|
|
|
|
2019-02-20 21:38:36 -05:00
|
|
|
# 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()
|