move compile_commands.json to project root directory

This commit is contained in:
veclav talica 2024-08-22 06:38:31 +03:00
parent 859ae8f91e
commit fa85fb8dd1
2 changed files with 17 additions and 10 deletions

2
.gitignore vendored
View File

@ -18,6 +18,8 @@
build/ build/
out/ out/
compile_commands.json
# this is created when using Conan # this is created when using Conan
CMakeUserPresets.json CMakeUserPresets.json

View File

@ -16,7 +16,7 @@ if (NOT CMAKE_BUILD_TYPE)
endif () endif ()
set(TOWNENGINE_TARGET townengine CACHE INTERNAL "") set(TOWNENGINE_TARGET townengine CACHE INTERNAL "")
set(TOWNENGINE_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "") set(TOWNENGINE_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
option(TOWNENGINE_HOT_RELOAD "Enable hot reloading support" TRUE) option(TOWNENGINE_HOT_RELOAD "Enable hot reloading support" TRUE)
add_compile_options($<$<BOOL:${TOWNENGINE_HOT_RELOAD}>:-fPIC>) add_compile_options($<$<BOOL:${TOWNENGINE_HOT_RELOAD}>:-fPIC>)
@ -60,7 +60,7 @@ set(TOWNENGINE_SOURCE_FILES
${SYSTEM_SOURCE_FILES}) ${SYSTEM_SOURCE_FILES})
list(TRANSFORM TOWNENGINE_SOURCE_FILES PREPEND ${TOWNENGINE_DIR}/) list(TRANSFORM TOWNENGINE_SOURCE_FILES PREPEND ${TOWNENGINE_ROOT_DIR}/)
# base engine code, reused for games and tools # base engine code, reused for games and tools
if (TOWNENGINE_HOT_RELOAD) if (TOWNENGINE_HOT_RELOAD)
@ -68,7 +68,7 @@ if (TOWNENGINE_HOT_RELOAD)
else () else ()
add_library(${TOWNENGINE_TARGET} STATIC ${TOWNENGINE_SOURCE_FILES}) add_library(${TOWNENGINE_TARGET} STATIC ${TOWNENGINE_SOURCE_FILES})
endif () endif ()
source_group(TREE ${TOWNENGINE_DIR} FILES ${TOWNENGINE_SOURCE_FILES}) source_group(TREE ${TOWNENGINE_ROOT_DIR} FILES ${TOWNENGINE_SOURCE_FILES})
set_target_properties(${TOWNENGINE_TARGET} PROPERTIES set_target_properties(${TOWNENGINE_TARGET} PROPERTIES
C_STANDARD 11 C_STANDARD 11
@ -176,11 +176,11 @@ function(include_deps target)
third-party/stb third-party/stb
third-party/x-watcher) third-party/x-watcher)
list(TRANSFORM THIRD_PARTY_INCLUDES PREPEND ${TOWNENGINE_DIR}/) list(TRANSFORM THIRD_PARTY_INCLUDES PREPEND ${TOWNENGINE_ROOT_DIR}/)
target_include_directories(${target} SYSTEM PRIVATE ${THIRD_PARTY_INCLUDES}) target_include_directories(${target} SYSTEM PRIVATE ${THIRD_PARTY_INCLUDES})
# allow access to headers from any point in source tree # allow access to headers from any point in source tree
target_include_directories(${target} PRIVATE ${TOWNENGINE_DIR}) target_include_directories(${target} PRIVATE ${TOWNENGINE_ROOT_DIR})
endfunction() endfunction()
@ -207,7 +207,7 @@ function(use_townengine target sources output_directory data_dir)
target_link_libraries(${target}_game PUBLIC SDL2::SDL2) target_link_libraries(${target}_game PUBLIC SDL2::SDL2)
# launcher binary, loads game and engine shared library # launcher binary, loads game and engine shared library
add_executable(${target}_app ${TOWNENGINE_DIR}/townengine/null.c) add_executable(${target}_app ${TOWNENGINE_ROOT_DIR}/townengine/null.c)
set_target_properties(${target}_app PROPERTIES set_target_properties(${target}_app PROPERTIES
OUTPUT_NAME launcher OUTPUT_NAME launcher
LIBRARY_OUTPUT_DIRECTORY ${output_directory}) LIBRARY_OUTPUT_DIRECTORY ${output_directory})
@ -261,6 +261,11 @@ if (${CMAKE_PROJECT_NAME} MATCHES townengine)
add_subdirectory(apps/testgame) add_subdirectory(apps/testgame)
endif () endif ()
# move compie_commands.json into root directory so that it plays nicer with editors
add_custom_command(TARGET ${TOWNENGINE_TARGET} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/compile_commands.json
${TOWNENGINE_ROOT_DIR})
# zip up assets # zip up assets
# currently, you must run cmake from the project root dir for this to work correctly # currently, you must run cmake from the project root dir for this to work correctly
#file(ARCHIVE_CREATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/data.${PACKAGE_EXTENSION} #file(ARCHIVE_CREATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/data.${PACKAGE_EXTENSION}