diff --git a/MyxCMakeConfig.cmake b/MyxCMakeConfig.cmake index b6dc426..6054aea 100644 --- a/MyxCMakeConfig.cmake +++ b/MyxCMakeConfig.cmake @@ -9,6 +9,7 @@ get_filename_component(MYX_CMAKE_SOURCE_DIR "${CMAKE_CURRENT_LIST_FILE}" DIRECTO set(MYX_CMAKE_BACKPORTS_DIR "${MYX_CMAKE_SOURCE_DIR}/backports") set(MYX_CMAKE_LIB_DIR "${MYX_CMAKE_SOURCE_DIR}/lib") +include(${MYX_CMAKE_LIB_DIR}/macro/CreateSymlink.cmake) include(${MYX_CMAKE_LIB_DIR}/macro/FindPackages.cmake) include(${MYX_CMAKE_LIB_DIR}/macro/InstallRelative.cmake) @@ -18,6 +19,7 @@ if(${CMAKE_VERSION} VERSION_LESS "3.11.0") include(${MYX_CMAKE_BACKPORTS_DIR}/FetchContent.cmake) endif() +include(${MYX_CMAKE_LIB_DIR}/PopulateCMakeBinaryDir.cmake) include(${MYX_CMAKE_LIB_DIR}/Includes.cmake) include(${MYX_CMAKE_LIB_DIR}/CurrentDate.cmake) include(${MYX_CMAKE_LIB_DIR}/ColoredMessages.cmake) diff --git a/MyxCMakeConfigVersion.cmake b/MyxCMakeConfigVersion.cmake index 8bd9f86..0691d44 100644 --- a/MyxCMakeConfigVersion.cmake +++ b/MyxCMakeConfigVersion.cmake @@ -1,4 +1,4 @@ -set(MYX_CMAKE_PACKAGE_VERSION "1.99.82") +set(MYX_CMAKE_PACKAGE_VERSION "1.99.83") if(MYX_CMAKE_PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) set(PACKAGE_VERSION_COMPATIBLE FALSE) else() diff --git a/README.md b/README.md index 4d36c2b..c8311c8 100644 --- a/README.md +++ b/README.md @@ -36,10 +36,10 @@ if(MYX_CMAKE_DIR) set(ENV{MYX_CMAKE_DIR} ${MYX_CMAKE_DIR}) endif() if(DEFINED ENV{MYX_CMAKE_DIR}) - find_package(MyxCMake 1.99.82 REQUIRED) + find_package(MyxCMake 1.99.83 REQUIRED) else() if(MYX_CMAKE_USE_SYSTEM) - find_package(MyxCMake 1.99.82 REQUIRED) + find_package(MyxCMake 1.99.83 REQUIRED) else() include(${PROJECT_SOURCE_DIR}/cmake/myx/MyxCMakeConfig.cmake) endif() diff --git a/VERSION b/VERSION index 31fea65..487ff64 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.99.82 +1.99.83 diff --git a/lib/PopulateCMakeBinaryDir.cmake b/lib/PopulateCMakeBinaryDir.cmake new file mode 100644 index 0000000..8078fca --- /dev/null +++ b/lib/PopulateCMakeBinaryDir.cmake @@ -0,0 +1,15 @@ +include_guard(GLOBAL) + +# Создание в каталоге ${CMAKE_BINARY_DIR} стандартных каталогов bin,include,lib, +# а также символических ссылок на каталоги в ${CMAKE_SOURCE_DIR}/files +file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/include) +file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/bin) +file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/include) +file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/lib) + +create_symlink("${CMAKE_SOURCE_DIR}/files/etc" "${CMAKE_BINARY_DIR}/etc") +create_symlink("${CMAKE_SOURCE_DIR}/files/log" "${CMAKE_BINARY_DIR}/log") +create_symlink("${CMAKE_SOURCE_DIR}/files/share" "${CMAKE_BINARY_DIR}/share") +create_symlink("${CMAKE_SOURCE_DIR}/files/var" "${CMAKE_BINARY_DIR}/var") diff --git a/lib/TargetSetup.cmake b/lib/TargetSetup.cmake index 7727ab4..dc1e3e0 100644 --- a/lib/TargetSetup.cmake +++ b/lib/TargetSetup.cmake @@ -12,31 +12,6 @@ function(myx_target_setup NAME) myx_message_fatal_error("Target ${NAME} does not exists.") endif() - # Создание в каталоге ${CMAKE_BINARY_DIR} стандартных каталогов bin,include,lib, - # а также символических ссылок на каталоги в ${CMAKE_SOURCE_DIR}/files - if(NOT TARGET ${NAME}-populate-cmake-binary-dir) - add_custom_target( - ${NAME}-populate-cmake-binary-dir - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/bin - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/include - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/lib - # Ссылка на каталог с журналами - COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/files/log - ${CMAKE_BINARY_DIR}/log - # Ссылка на каталог с обрабатываемыми данными - COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/files/var - ${CMAKE_BINARY_DIR}/var - # Ссылка на каталог с постоянными данными - COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/files/share - ${CMAKE_BINARY_DIR}/share - # Ссылка на каталог настроек - COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/files/etc - ${CMAKE_BINARY_DIR}/etc - ) - add_dependencies(${NAME} ${NAME}-populate-cmake-binary-dir) - endif() - get_target_property(target_type ${NAME} TYPE) foreach(iter ${ARG_PACKAGES}) @@ -69,10 +44,6 @@ function(myx_target_setup NAME) set_property(TARGET ${NAME} APPEND PROPERTY PRIVATE_HEADER_FILES "${ARG_PCH}") endif() - if(NOT IS_DIRECTORY "${PROJECT_BINARY_DIR}/include") - file(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/include") - endif() - if(NOT target_type STREQUAL "INTERFACE_LIBRARY") target_include_directories(${PROJECT_NAME} PRIVATE $) diff --git a/lib/macro/CreateSymlink.cmake b/lib/macro/CreateSymlink.cmake new file mode 100644 index 0000000..fe04de6 --- /dev/null +++ b/lib/macro/CreateSymlink.cmake @@ -0,0 +1,11 @@ +include_guard(GLOBAL) + +macro(create_symlink original linkname) + if(NOT EXISTS ${linkname}) + if(${CMAKE_VERSION} VERSION_LESS "3.14.0") + execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${original} ${linkname}) + else() + file(CREATE_LINK ${original} ${linkname} SYMBOLIC) + endif() + endif() +endmacro(create_symlink original linkname)