From bb8c2631402118b6d7c8df7ce63db0352244bd47 Mon Sep 17 00:00:00 2001 From: Chen Gong Date: Mon, 11 Jan 2021 23:13:01 +0800 Subject: [PATCH] fix(cmake): use full paths defined by GNUInstallDirs Closes #424 --- CMakeLists.txt | 18 +++++++++++------- plugins/CMakeLists.txt | 2 +- sample/CMakeLists.txt | 2 +- src/CMakeLists.txt | 12 ++++++------ 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b1766c56e..35cf9db7b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -154,6 +154,7 @@ if(UNIX) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") endif() +# keep these variables lest some Rime plugin's cmake file is still using them { if(NOT DEFINED LIB_INSTALL_DIR) set(LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}) endif() @@ -161,6 +162,7 @@ endif() if(NOT DEFINED BIN_INSTALL_DIR) set(BIN_INSTALL_DIR ${CMAKE_INSTALL_BINDIR}) endif() +# } # uninstall target configure_file( @@ -173,22 +175,24 @@ add_custom_target(uninstall if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|FreeBSD|DragonFly|GNU") set(prefix "${CMAKE_INSTALL_PREFIX}") set(exec_prefix "${CMAKE_INSTALL_PREFIX}") - set(bindir "${exec_prefix}/${BIN_INSTALL_DIR}") - set(libdir "${exec_prefix}/${LIB_INSTALL_DIR}") - set(pkgdatadir "${prefix}${rime_data_dir}") - set(includedir "${prefix}/${CMAKE_INSTALL_INCLUDEDIR}") + set(bindir "${CMAKE_INSTALL_FULL_BINDIR}") + set(libdir "${CMAKE_INSTALL_FULL_LIBDIR}") + set(pkgdatadir "${CMAKE_INSTALL_PREFIX}${rime_data_dir}") + set(includedir "${CMAKE_INSTALL_FULL_INCLUDEDIR}") configure_file( ${PROJECT_SOURCE_DIR}/rime.pc.in ${PROJECT_BINARY_DIR}/rime.pc @ONLY) install(FILES ${PROJECT_BINARY_DIR}/rime.pc - DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) + DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig) endif() -install(FILES cmake/RimeConfig.cmake DESTINATION share/cmake/rime) +install(FILES cmake/RimeConfig.cmake + DESTINATION ${CMAKE_INSTALL_FULL_DATADIR}/cmake/rime) file(GLOB rime_public_header_files ${PROJECT_SOURCE_DIR}/src/*.h) -install(FILES ${rime_public_header_files} DESTINATION include) +install(FILES ${rime_public_header_files} + DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR}) if(BUILD_DATA) file(GLOB rime_preset_data_files ${PROJECT_SOURCE_DIR}/data/preset/*.yaml) diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 17a6cc58a..f8a505b89 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -43,7 +43,7 @@ foreach(plugin ${plugins}) if(XCODE_VERSION) set_target_properties(${plugin_name} PROPERTIES INSTALL_NAME_DIR "@rpath") endif(XCODE_VERSION) - install(TARGETS ${plugin_name} DESTINATION ${LIB_INSTALL_DIR}) + install(TARGETS ${plugin_name} DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}) endif() endforeach(plugin) diff --git a/sample/CMakeLists.txt b/sample/CMakeLists.txt index 4632fb9cb..0376aa2bc 100644 --- a/sample/CMakeLists.txt +++ b/sample/CMakeLists.txt @@ -26,7 +26,7 @@ if(BUILD_SAMPLE) PROPERTIES INSTALL_NAME_DIR "@rpath") endif(XCODE_VERSION) - install(TARGETS ${sample_library} DESTINATION ${LIB_INSTALL_DIR}) + install(TARGETS ${sample_library} DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}) add_subdirectory(tools) if(BUILD_TEST) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index cb521667a..b667fa6bf 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -78,7 +78,7 @@ if(BUILD_SHARED_LIBS) if(XCODE_VERSION) set_target_properties(rime PROPERTIES INSTALL_NAME_DIR "@rpath") endif() - install(TARGETS rime DESTINATION ${LIB_INSTALL_DIR}) + install(TARGETS rime DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}) if(BUILD_SEPARATE_LIBS) add_library(rime-dict ${rime_dict_module_src}) @@ -91,7 +91,7 @@ if(BUILD_SHARED_LIBS) if(XCODE_VERSION) set_target_properties(rime-dict PROPERTIES INSTALL_NAME_DIR "@rpath") endif() - install(TARGETS rime-dict DESTINATION ${LIB_INSTALL_DIR}) + install(TARGETS rime-dict DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}) add_library(rime-gears ${rime_gears_src}) target_link_libraries(rime-gears @@ -104,7 +104,7 @@ if(BUILD_SHARED_LIBS) if(XCODE_VERSION) set_target_properties(rime-gears PROPERTIES INSTALL_NAME_DIR "@rpath") endif() - install(TARGETS rime-gears DESTINATION ${LIB_INSTALL_DIR}) + install(TARGETS rime-gears DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}) add_library(rime-levers ${rime_levers_src}) target_link_libraries(rime-levers @@ -117,7 +117,7 @@ if(BUILD_SHARED_LIBS) if(XCODE_VERSION) set_target_properties(rime-levers PROPERTIES INSTALL_NAME_DIR "@rpath") endif() - install(TARGETS rime-levers DESTINATION ${LIB_INSTALL_DIR}) + install(TARGETS rime-levers DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}) if(rime_plugins_library) add_library(rime-plugins @@ -134,12 +134,12 @@ if(BUILD_SHARED_LIBS) if(XCODE_VERSION) set_target_properties(rime-plugins PROPERTIES INSTALL_NAME_DIR "@rpath") endif() - install(TARGETS rime-plugins DESTINATION ${LIB_INSTALL_DIR}) + install(TARGETS rime-plugins DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}) endif() endif() else() add_library(rime-static STATIC ${rime_src}) target_link_libraries(rime-static ${rime_deps}) set_target_properties(rime-static PROPERTIES OUTPUT_NAME "rime" PREFIX "lib") - install(TARGETS rime-static DESTINATION ${LIB_INSTALL_DIR}) + install(TARGETS rime-static DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}) endif()