You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

219 lines
8.9 KiB
CMake

cmake_minimum_required(VERSION 3.16)
set(CMAKE_WARN_VS10 OFF)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /ZI")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO")
project(LowKCut VERSION 1.0)
set(LowKSolution OFF)
if(NOT DEFINED Use_Presets)
if(${CMAKE_SIZEOF_VOID_P} STREQUAL "8")
message(">> X64 Compile")
option(CompileWithX64 "use x64 platform init" ON)
else()
message(">> X32 Compile")
option(CompileWithX64 "use x32 platform init" OFF)
endif()
message(">> not use presets")
if(CompileWithX64)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/../../output/debug/x64_bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/../../output/debug/x64_lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/../../output/debug/x64_static_lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/../../output/release/x64_bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/../../output/release/x64_lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/../../output/release/x64_static_lib)
else()
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/../../output/debug/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/../../output/debug/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/../../output/debug/static_lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/../../output/release/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/../../output/release/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/../../output/release/static_lib)
#list(APPEND CMAKE_PREFIX_PATH D:/Projects/ThidLibrary/msvc2015/LowKBase/lib/cmake/LowKBase)
endif()
if(CompileWithX64)
set(Qt5_DIR "D:/Qt/Qt5.9.9/5.9.9/msvc2015_64/lib/cmake/Qt5")
set(third_lib_directory "D:/Projects/ThidLibrary/msvc2015_64")
else()
set(Qt5_DIR "D:/Qt/Qt5.9.9/5.9.9/msvc2015/lib/cmake/Qt5")
set(third_lib_directory "D:/Projects/ThidLibrary/msvc2015")
endif()
else()
message(">> use presets config")
endif()
if(DEFINED Qt5_12_12)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/output/debug/Qt5_12_x64_bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/output/debug/Qt5_12_x64_lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/output/debug/Qt5_12_x64_static_lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/output/release/Qt5_12_x64_bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/output/release/Qt5_12_x64_lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/output/release/Qt5_12_x64_static_lib)
set(Qt5_DIR "D:/Qt/Qt5.12.12/5.12.12/msvc2015_64/lib/cmake/Qt5")
set(LowKBase_DIR "D:/Projects/ThidLibrary/msvc2015_64_Qt5_12_12/LowKBase/lib/cmake/LowKBase")
else()
set(LowKBase_DIR ${third_lib_directory}/LowKBase/lib/cmake/LowKBase)
endif()
message(">> third_lib_directory ${third_lib_directory}")
message(">> Qt5Dir:" ${Qt5_DIR})
message(">> LowKBase:" ${LowKBase_DIR})
#option(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/modules)
option(ENABLE_SOLUTION_FOLDERS "ENABLE_SOLUTION_FOLDERS" ON)
if(ENABLE_SOLUTION_FOLDERS)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets")
endif()
#set(Qt5_DIR "D:/Qt/Qt5.9.9/5.9.9/msvc2015/lib/cmake/Qt5")
#set(third_lib_directory "D:/third-party/install/msvc2015")
set(fmt_DIR ${third_lib_directory}/fmt/lib/cmake/fmt)
set(doctest_DIR ${third_lib_directory}/doctest/lib/cmake/doctest)
set(cserialport_DIR ${third_lib_directory}/CSerialPort/lib/cmake/CSerialPort)
set(glog_DIR ${third_lib_directory}/glog/lib/cmake/glog)
if(NOT DEFINED LowKBase_DIR)
set(LowKBase_DIR ${third_lib_directory}/LowKBase/lib/cmake/LowKBase)
endif()
list(APPEND CMAKE_PREFIX_PATH ${LowKBase_DIR})
list(APPEND CMAKE_MODULE_PATH ${third_lib_directory}/modules)
if(DEFINED Qt5_12_12)
message(">> qt 5.12.12 support")
find_package(Qt5 5.12.12 EXACT COMPONENTS Core Xml Sql REQUIRED)
else()
message(">> qt 5.9.9 support")
find_package(Qt5 5.9.9 EXACT COMPONENTS Core Xml Sql REQUIRED)
endif()
find_package(fmt REQUIRED)
find_package(cserialport REQUIRED)
find_package(halcon10)
find_package(doctest)
find_package(glog REQUIRED)
find_package(LowKBase 2.1.0 EXACT COMPONENTS common_base drivercard hardware_driver
logic_driver vision_base cam_algorithm cam_driver
motor_driver cam_algorithm fsm allsystem REQUIRED)
function(TargetCopyDependency export_lib export_lib_dependency)
if (NOT ${${export_lib_dependency}_ROOT} STREQUAL "")
set(${export_lib_dependency}_BASE_PATH ${${export_lib_dependency}_ROOT})
elseif (NOT ${${export_lib_dependency}_INCLUDE_DIR} STREQUAL "")
set(${export_lib_dependency}_BASE_PATH ${${export_lib_dependency}_INCLUDE_DIR}/..)
elseif (NOT ${${export_lib_dependency}_LIBRARY} STREQUAL "")
get_filename_component(${export_lib_dependency}_BASE_PATH ${${export_lib_dependency}_LIBRARY} DIRECTORY)
list(APPEND ${export_lib_dependency}_BASE_PATH "/..")
else()
message(STATUS ${export_lib_dependency}_NOT_FOUND)
endif()
#message(STATUS "${export_lib_dependency}_BASE_PATH ${${export_lib_dependency}_BASE_PATH}")
if (NOT ${${export_lib_dependency}_BASE_PATH} STREQUAL "")
FILE(GLOB_RECURSE ${export_lib_dependency}_LIBRARIES
${${export_lib_dependency}_BASE_PATH}/*.dll
${${export_lib_dependency}_BASE_PATH}/license.*
)
endif()
if (NOT "${${export_lib_dependency}_LIBRARIES}" STREQUAL "")
#message(STATUS "${export_lib_dependency}_LIBRARIES ${${export_lib_dependency}_LIBRARIES}")
add_custom_command(TARGET ${export_lib} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${${export_lib_dependency}_LIBRARIES}
$<TARGET_FILE_DIR:${export_lib}>
)
endif()
endfunction()
add_library(logic_interface INTERFACE IMPORTED)
set_target_properties(logic_interface PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/global_define
)
message(">> LowKSolution:" ${LowKSolution})
if(LowKSolution)
target_compile_definitions(logic_interface INTERFACE __LOWK_SOLUTION__)
else()
target_compile_definitions(logic_interface INTERFACE __LOWK_SOLUTION__NOT)
endif()
if(LowKSolution)
set(lib_laser_path laser_path_driver)
set(lib_laser_power_cali laser_power_cali)
else()
set(lib_laser_path laser_path_driver)
set(lib_laser_power_cali laser_power_cali)
endif()
add_subdirectory(cam_driver_impl)
add_subdirectory(motor_driver_impl)
add_subdirectory(system_manager)
add_subdirectory(controls_common)
add_subdirectory(controls_vision)
add_subdirectory(gui)
add_subdirectory(log_impl)
#add_subdirectory(laser_path_driver)
add_subdirectory(laser_driver_impl)
add_subdirectory(light_driver_impl)
add_subdirectory(power_meter_driver)
#add_subdirectory(laser_path_driver)
#add_subdirectory(laser_power_cali)
add_subdirectory(${lib_laser_path})
add_subdirectory(${lib_laser_power_cali})
add_subdirectory(laser_cali_driver)
add_subdirectory(kerf_base)
add_subdirectory(worktable_driver)
add_subdirectory(product_driver)
add_subdirectory(system_external)
if(DEFINED Qt5_12_12)
message(">> qt 5.12.12 support")
find_package(Qt5 5.12.12 COMPONENTS LinguistTools REQUIRED)
else()
message(">> qt 5.9.9 support")
find_package(Qt5 5.9.9 COMPONENTS LinguistTools REQUIRED)
endif()
set(TS_FILES translations/project_cn.ts translations/project_en.ts)
set_source_files_properties(${TS_FILES}
PROPERTIES OUTPUT_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/translations)
qt5_create_translation(QM_FILES ${CMAKE_CURRENT_SOURCE_DIR}/gui/src/
${CMAKE_CURRENT_SOURCE_DIR}/system_manager/src/
${CMAKE_CURRENT_SOURCE_DIR}/cam_driver_impl/src/
${CMAKE_CURRENT_SOURCE_DIR}/controls_common/src/
${CMAKE_CURRENT_SOURCE_DIR}/controls_vision/src/
${CMAKE_CURRENT_SOURCE_DIR}/motor_driver_impl/src/
${CMAKE_CURRENT_SOURCE_DIR}/laser_driver_impl/src/
${CMAKE_CURRENT_SOURCE_DIR}/laser_path_driver/src/
${CMAKE_CURRENT_SOURCE_DIR}/power_meter_driver/src
${CMAKE_CURRENT_SOURCE_DIR}/light_driver_impl/src/
${CMAKE_CURRENT_SOURCE_DIR}/log_impl/src/
${CMAKE_CURRENT_SOURCE_DIR}/${lib_laser_path}/src
${CMAKE_CURRENT_SOURCE_DIR}/${lib_laser_power_cali}/src
${CMAKE_CURRENT_SOURCE_DIR}/laser_cali_driver/src/
${CMAKE_CURRENT_SOURCE_DIR}/kerf_base/src/
${CMAKE_CURRENT_SOURCE_DIR}/worktable_driver/src/
${CMAKE_CURRENT_SOURCE_DIR}/system_external/src/
${TS_FILES})
add_custom_target(lupdate_task DEPENDS ${TS_FILES})
add_custom_target(lrelease_task DEPENDS ${QM_FILES})
message("output_debug:" ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG})
message("output_release:" ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RelWithDebInfo})