From 37ec303118ab1551aaa389c1341dccf2cedc37cc Mon Sep 17 00:00:00 2001 From: rexy712 Date: Sat, 24 Nov 2018 09:41:09 -0800 Subject: [PATCH] Improved cmake build efficiency --- CMakeLists.txt | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b5d521..969c4ba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,15 +1,20 @@ include(CMakeDependentOption) cmake_minimum_required(VERSION 3.0.2) project(rexbacklight) + +#setup common defines for C files set(rexbacklight_VERSION_MAJOR 1) -set(rexbacklight_VERSION_MINOR 2) +set(rexbacklight_VERSION_MINOR 3) set(INCLUDE_PATH ${CMAKE_SOURCE_DIR}/include) configure_file( "${INCLUDE_PATH}/config.h.in" "${INCLUDE_PATH}/config.h" ) + +#set project include directory include_directories("${INCLUDE_PATH}") +#setup cmake options option(BUILD_REXLEDCTL "Build led control program" ON) option(BUILD_REXBACKLIGHT "Build backlight control program" ON) option(XBACKLIGHT_COMPAT "Use xbacklight style options (eg -get -inc -dec)" OFF) @@ -24,21 +29,37 @@ if(XBACKLIGHT_COMPAT) add_definitions(-DXBACKLIGHT_COMPAT_OPTIONS) endif() +#locate rjp library requirements +find_library(RJP_LIB rjp) +find_path(RJP_HEADER_DIR rjp.h) + +#temporary library (no actual library generated) +add_library(common_srcs OBJECT src/cmd.c src/common.c) + if(BUILD_REXLEDCTL) - add_executable (rexledctl src/rexbacklight.c src/cmd.c src/common.c) - target_compile_definitions(rexledctl PRIVATE REXLEDCTL) + add_executable (rexledctl src/rexbacklight.c) + add_dependencies(rexledctl common_srcs) #force common_srcs to be built first + target_compile_definitions(rexledctl PRIVATE REXLEDCTL) #define REXLEDCTL in C files + target_link_libraries(rexledctl PRIVATE "${RJP_LIB}") #link with rjp + target_link_libraries(rexledctl PRIVATE $) #link with the common_srcs "library" + target_include_directories(rexledctl PUBLIC "${RJP_HEADER_DIR}") #include rjp.h directory install(TARGETS rexledctl RUNTIME DESTINATION bin) if(INSTALL_UDEV_LED_RULE) install(FILES ${CMAKE_SOURCE_DIR}/rules/91-leds.rules DESTINATION ${UDEV_DIR}) endif() endif() if(BUILD_REXBACKLIGHT) - add_executable (rexbacklight src/rexbacklight.c src/cmd.c src/common.c) + add_executable (rexbacklight src/rexbacklight.c) + add_dependencies(rexledctl common_srcs) target_compile_definitions(rexbacklight PRIVATE REXBACKLIGHT) + target_link_libraries(rexbacklight PRIVATE "${RJP_LIB}") + target_link_libraries(rexbacklight PRIVATE $) + target_include_directories(rexbacklight PUBLIC "${RJP_HEADER_DIR}") install(TARGETS rexbacklight RUNTIME DESTINATION bin) if(INSTALL_UDEV_BACKLIGHT_RULE) install(FILES ${CMAKE_SOURCE_DIR}/rules/91-backlight.rules DESTINATION ${UDEV_DIR}) endif() endif() +#uninstall target add_custom_target(uninstall cat install_manifest.txt | xargs rm)