[cmake] Improve cmake build system

This commit is contained in:
JackBoosY
2022-01-10 05:21:23 -08:00
parent c70eb3f708
commit afa29da7aa
9 changed files with 85 additions and 33 deletions
+7 -3
View File
@@ -10,6 +10,10 @@ add_executable(360safedemo ${source_files})
set_target_properties(360safedemo PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS")
add_dependencies(360safedemo duilib)
target_link_libraries(360safedemo duilib)
add_custom_command(TARGET 360safedemo POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${PROJECT_BINARY_DIR}/bin/360safedemo.exe ${PROJECT_SOURCE_DIR}/bin/360safedemo.exe)
install(
TARGETS 360safedemo
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
+14 -7
View File
@@ -10,6 +10,8 @@ cmake_minimum_required(VERSION 2.8)
project(dui)
option(DUILIB_BUILD_EXAMPLES "Build examples" OFF)
message(STATUS," CMake project files for duilib")
# this line is for UNICODE release,which is required by DuiDesigner
@@ -17,10 +19,15 @@ add_definitions(-DUNICODE -D_UNICODE)
# add each CMake file
add_subdirectory(duilib)
add_subdirectory(360SafeDemo)
add_subdirectory(FlashDemo)
add_subdirectory(GameDemo)
add_subdirectory(ListDemo)
# add_subdirectory(MenuDemo) the sources in this project has error
add_subdirectory(QQDemo)
add_subdirectory(RichListDemo)
if (DUILIB_BUILD_EXAMPLES)
add_subdirectory(360SafeDemo)
add_subdirectory(FlashDemo)
add_subdirectory(GameDemo)
add_subdirectory(ListDemo)
# add_subdirectory(MenuDemo) the sources in this project has error
add_subdirectory(QQDemo)
add_subdirectory(RichListDemo)
endif()
install(FILES ${PROJECT_SOURCE_DIR}/LICENSE DESTINATION share/${PROJECT_NAME})
+28 -3
View File
@@ -20,6 +20,31 @@ add_library(duilib SHARED ${Control_src} ${Core_src} ${Layout_src} ${Utils_src}
add_definitions(-DUILIB_EXPORTS)
target_link_libraries(duilib comctl32)
set_target_properties(duilib PROPERTIES OUTPUT_NAME "duilib")
add_custom_command(TARGET duilib POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${PROJECT_BINARY_DIR}/lib/duilib.dll ${PROJECT_SOURCE_DIR}/bin/duilib.dll)
# Install headers
file(GLOB DUILIB_PUBLIC_HDRS "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
file(GLOB DUILIB_CORE_HDRS "${CMAKE_CURRENT_SOURCE_DIR}/Core/*.h")
file(GLOB DUILIB_UTILS_HDRS "${CMAKE_CURRENT_SOURCE_DIR}/Utils/*.h")
file(GLOB DUILIB_CONTROL_HDRS "${CMAKE_CURRENT_SOURCE_DIR}/Control/*.h")
file(GLOB DUILIB_LAYOUT_HDRS "${CMAKE_CURRENT_SOURCE_DIR}/Layout/*.h")
install(FILES ${DUILIB_PUBLIC_HDRS} DESTINATION include)
install(FILES ${DUILIB_CORE_HDRS} DESTINATION include/Core)
install(FILES ${DUILIB_UTILS_HDRS} DESTINATION include/Utils)
install(FILES ${DUILIB_CONTROL_HDRS} DESTINATION include/Control)
install(FILES ${DUILIB_LAYOUT_HDRS} DESTINATION include/Layout)
# Install binaries
install(
TARGETS duilib
EXPORT duilib-config
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
# Install cmake configure files
install(EXPORT duilib-config
NAMESPACE dui:::
DESTINATION share/duilib
)
+6 -3
View File
@@ -11,6 +11,9 @@ add_dependencies(FlashDemo duilib)
target_link_libraries(FlashDemo duilib)
set_target_properties(FlashDemo PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS")
add_custom_command(TARGET FlashDemo POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${PROJECT_BINARY_DIR}/bin/FlashDemo.exe ${PROJECT_SOURCE_DIR}/bin/FlashDemo.exe)
install(
TARGETS FlashDemo
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
+6 -3
View File
@@ -11,6 +11,9 @@ add_dependencies(GameDemo duilib)
target_link_libraries(GameDemo duilib)
set_target_properties(GameDemo PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS")
add_custom_command(TARGET GameDemo POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${PROJECT_BINARY_DIR}/bin/GameDemo.exe ${PROJECT_SOURCE_DIR}/bin/GameDemo.exe)
install(
TARGETS GameDemo
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
+6 -3
View File
@@ -11,6 +11,9 @@ add_dependencies(ListDemo duilib)
target_link_libraries(ListDemo duilib)
set_target_properties(ListDemo PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS")
add_custom_command(TARGET ListDemo POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${PROJECT_BINARY_DIR}/bin/ListDemo.exe ${PROJECT_SOURCE_DIR}/bin/ListDemo.exe)
install(
TARGETS ListDemo
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
+6 -4
View File
@@ -11,7 +11,9 @@ add_executable(MenuDemo ${SRC} MenuDemo.rc)
set_target_properties(MenuDemo PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS")
target_link_libraries(MenuDemo duilib)
add_custom_command(TARGET MenuDemo POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${PROJECT_BINARY_DIR}/bin/MenuDemo.exe ${PROJECT_SOURCE_DIR}/bin/MenuDemo.exe)
install(
TARGETS MenuDemo
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
+6 -4
View File
@@ -11,7 +11,9 @@ add_executable(QQDemo ${SRC} QQDemo.rc)
set_target_properties(QQDemo PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS")
target_link_libraries(QQDemo duilib)
add_custom_command(TARGET QQDemo POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${PROJECT_BINARY_DIR}/bin/QQDemo.exe ${PROJECT_SOURCE_DIR}/bin/QQDemo.exe)
install(
TARGETS QQDemo
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
+6 -3
View File
@@ -12,6 +12,9 @@ add_executable(RichListDemo ${SRC_LIST} RichListDemo.rc)
set_target_properties(RichListDemo PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS")
target_link_libraries(RichListDemo duilib)
add_custom_command(TARGET RichListDemo POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${PROJECT_BINARY_DIR}/bin/RichListDemo.exe ${PROJECT_SOURCE_DIR}/bin/RichListDemo.exe)
install(
TARGETS RichListDemo
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)