forked from Qortal/Brooklyn
44 lines
2.1 KiB
CMake
44 lines
2.1 KiB
CMake
# Function which creates appropriate "source groups" (filter folders in Visual Studio) for the given list of source files
|
|
function(createSourceGroups source1)
|
|
set(sources ${source1} ${ARGN})
|
|
foreach(source ${sources})
|
|
get_filename_component(source_path ${source} PATH)
|
|
string(REPLACE "/" "\\" source_path_backslashes "${source_path}")
|
|
source_group(${source_path_backslashes} FILES ${source})
|
|
endforeach()
|
|
endfunction()
|
|
|
|
# Further processes a target and its list of source files adding extra touches useful for some generators
|
|
# (filter folders, group targets in folders, etc.).
|
|
# All optional arguments are treated as additional source files.
|
|
function(setup_target targetName source1)
|
|
set(sources ${source1} ${ARGN})
|
|
|
|
createSourceGroups(${sources})
|
|
|
|
# Enable USE_FOLDERS. This is required by the set_target_properties(... FOLDER ...) call below.
|
|
# We prefer to set it here rather than globally at the top of the file so that we only modify
|
|
# the Cmake environment if/when the functionality is actually required.
|
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
|
file(RELATIVE_PATH projectFolder ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
|
|
set_target_properties(${targetName} PROPERTIES FOLDER "${projectFolder}")
|
|
endfunction()
|
|
|
|
# Convenience replacement of add_executable(), which besides adding an executable to the project
|
|
# further configures the target via setup_target().
|
|
# All optional arguments are treated as additional source files.
|
|
function(add_executable_ex targetName source1)
|
|
set(sources ${source1} ${ARGN})
|
|
add_executable(${targetName} ${sources})
|
|
setup_target(${targetName} ${sources})
|
|
endfunction()
|
|
|
|
# Convenience replacement of add_library(), which besides adding a library to the project
|
|
# further configures the target via setup_target().
|
|
# All optional arguments are treated as additional source files.
|
|
function(add_library_ex targetName libraryType source1)
|
|
set(sources ${source1} ${ARGN})
|
|
add_library(${targetName} ${libraryType} ${sources})
|
|
setup_target(${targetName} ${sources})
|
|
endfunction()
|