set(FOURKIT_PROJECT_DIR "${CMAKE_CURRENT_SOURCE_DIR}") set(FOURKIT_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/bin/$") set(FOURKIT_CSPROJ "${FOURKIT_PROJECT_DIR}/Minecraft.Server.FourKit.csproj") file(GLOB_RECURSE FOURKIT_SOURCES RELATIVE "${FOURKIT_PROJECT_DIR}" "${FOURKIT_PROJECT_DIR}/*.cs") list(FILTER FOURKIT_SOURCES EXCLUDE REGEX "([/\\](obj|bin)[/\\])|^(obj|bin)[/\\]") set(DOTNET_CONFIG "$,Debug,Release>") foreach(src_file IN LISTS FOURKIT_SOURCES) get_filename_component(src_path "${src_file}" PATH) if(src_path) string(REPLACE "/" "\\" group_path "${src_path}") source_group("${group_path}" FILES "${FOURKIT_PROJECT_DIR}/${src_file}") endif() endforeach() list(TRANSFORM FOURKIT_SOURCES PREPEND "${FOURKIT_PROJECT_DIR}/") add_custom_target(Minecraft.Server.FourKit ALL COMMAND dotnet build "${FOURKIT_CSPROJ}" --configuration "${DOTNET_CONFIG}" --output "${FOURKIT_OUTPUT_DIR}" WORKING_DIRECTORY "${FOURKIT_PROJECT_DIR}" SOURCES ${FOURKIT_SOURCES} COMMENT "dotnet build Minecraft.Server.FourKit" VERBATIM ) set_target_properties(Minecraft.Server.FourKit PROPERTIES OUTPUT_NAME "Minecraft.Server.FourKit" )