Build: Remove scripts include directories from worldserver compilation command line, allowing compilation to happen in directories with longer path before encountering msbuild error MSB6002: The command-line for the “RC” task is too long
Signed-off-by: luis <[email protected]>
This commit is contained in:
@@ -16,13 +16,17 @@
|
|||||||
# ${CMAKE_CURRENT_SOURCE_DIR}
|
# ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
# EXCLUDE
|
# EXCLUDE
|
||||||
# ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders
|
# ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders
|
||||||
# ${CMAKE_CURRENT_SOURCE_DIR}/Platform)
|
# ${CMAKE_CURRENT_SOURCE_DIR}/Platform
|
||||||
|
# HEADER_VISIBILITY PRIVATE) # default is PUBLIC, this controls whether other targets that have this target as dependency will be able to access its headers
|
||||||
#
|
#
|
||||||
function(CollectAndAddSourceFiles target_name current_dir)
|
function(CollectAndAddSourceFiles target_name current_dir)
|
||||||
cmake_parse_arguments(PARSE_ARGV 2 arg "" "BASE_DIR" "EXCLUDE")
|
cmake_parse_arguments(PARSE_ARGV 2 arg "" "BASE_DIR;HEADER_VISIBILITY" "EXCLUDE")
|
||||||
if(NOT arg_BASE_DIR)
|
if(NOT arg_BASE_DIR)
|
||||||
set(arg_BASE_DIR "${current_dir}")
|
set(arg_BASE_DIR "${current_dir}")
|
||||||
endif()
|
endif()
|
||||||
|
if(NOT arg_HEADER_VISIBILITY)
|
||||||
|
set(arg_HEADER_VISIBILITY "PUBLIC")
|
||||||
|
endif()
|
||||||
list(FIND arg_EXCLUDE "${current_dir}" IS_EXCLUDED)
|
list(FIND arg_EXCLUDE "${current_dir}" IS_EXCLUDED)
|
||||||
if(IS_EXCLUDED EQUAL -1)
|
if(IS_EXCLUDED EQUAL -1)
|
||||||
cmake_path(RELATIVE_PATH current_dir BASE_DIRECTORY "${arg_BASE_DIR}" OUTPUT_VARIABLE fileset_name)
|
cmake_path(RELATIVE_PATH current_dir BASE_DIRECTORY "${arg_BASE_DIR}" OUTPUT_VARIABLE fileset_name)
|
||||||
@@ -41,12 +45,12 @@ function(CollectAndAddSourceFiles target_name current_dir)
|
|||||||
${current_dir}/*.hpp)
|
${current_dir}/*.hpp)
|
||||||
|
|
||||||
target_sources(${target_name} PRIVATE ${private_source_files})
|
target_sources(${target_name} PRIVATE ${private_source_files})
|
||||||
target_sources(${target_name} PUBLIC FILE_SET "headers_${fileset_name}" TYPE HEADERS BASE_DIRS ${current_dir} FILES ${public_header_files})
|
target_sources(${target_name} ${arg_HEADER_VISIBILITY} FILE_SET "headers_${fileset_name}" TYPE HEADERS BASE_DIRS ${current_dir} FILES ${public_header_files})
|
||||||
|
|
||||||
file(GLOB SUB_DIRECTORIES ${current_dir}/*)
|
file(GLOB SUB_DIRECTORIES ${current_dir}/*)
|
||||||
foreach(SUB_DIRECTORY ${SUB_DIRECTORIES})
|
foreach(SUB_DIRECTORY ${SUB_DIRECTORIES})
|
||||||
if(IS_DIRECTORY ${SUB_DIRECTORY})
|
if(IS_DIRECTORY ${SUB_DIRECTORY})
|
||||||
CollectAndAddSourceFiles("${target_name}" "${SUB_DIRECTORY}" BASE_DIR ${arg_BASE_DIR} EXCLUDE ${arg_EXCLUDE})
|
CollectAndAddSourceFiles("${target_name}" "${SUB_DIRECTORY}" BASE_DIR ${arg_BASE_DIR} HEADER_VISIBILITY ${arg_HEADER_VISIBILITY} EXCLUDE ${arg_EXCLUDE})
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ foreach(SCRIPT_MODULE ${SCRIPT_MODULE_LIST})
|
|||||||
# Add the module name to STATIC_SCRIPT_MODULES
|
# Add the module name to STATIC_SCRIPT_MODULES
|
||||||
list(APPEND STATIC_SCRIPT_MODULES ${SCRIPT_MODULE})
|
list(APPEND STATIC_SCRIPT_MODULES ${SCRIPT_MODULE})
|
||||||
# Add the module content to the whole static module
|
# Add the module content to the whole static module
|
||||||
CollectAndAddSourceFiles(scripts ${SCRIPT_MODULE_PATH})
|
CollectAndAddSourceFiles(scripts ${SCRIPT_MODULE_PATH} HEADER_VISIBILITY PRIVATE)
|
||||||
endif()
|
endif()
|
||||||
elseif(${SCRIPT_MODULE_VARIABLE} STREQUAL "dynamic")
|
elseif(${SCRIPT_MODULE_VARIABLE} STREQUAL "dynamic")
|
||||||
# Generate an own dynamic module which is loadable on runtime
|
# Generate an own dynamic module which is loadable on runtime
|
||||||
@@ -153,7 +153,7 @@ foreach(SCRIPT_MODULE ${SCRIPT_MODULE_LIST})
|
|||||||
list(APPEND DYNAMIC_SCRIPT_MODULE_PROJECTS ${SCRIPT_MODULE_PROJECT_NAME})
|
list(APPEND DYNAMIC_SCRIPT_MODULE_PROJECTS ${SCRIPT_MODULE_PROJECT_NAME})
|
||||||
# Create the script module project
|
# Create the script module project
|
||||||
add_library(${SCRIPT_MODULE_PROJECT_NAME} SHARED)
|
add_library(${SCRIPT_MODULE_PROJECT_NAME} SHARED)
|
||||||
CollectAndAddSourceFiles(${SCRIPT_MODULE_PROJECT_NAME} ${SCRIPT_MODULE_PATH})
|
CollectAndAddSourceFiles(${SCRIPT_MODULE_PROJECT_NAME} ${SCRIPT_MODULE_PATH} HEADER_VISIBILITY PRIVATE)
|
||||||
target_sources(${SCRIPT_MODULE_PROJECT_NAME}
|
target_sources(${SCRIPT_MODULE_PROJECT_NAME}
|
||||||
PUBLIC
|
PUBLIC
|
||||||
FILE_SET HEADERS FILES ScriptLoader.h
|
FILE_SET HEADERS FILES ScriptLoader.h
|
||||||
|
|||||||
Reference in New Issue
Block a user