Files
EzUI/demo/CMakeLists.txt
2026-02-20 12:18:52 +08:00

104 lines
3.5 KiB
CMake

cmake_minimum_required(VERSION 3.0...9.0)
#gui库的包含目录位置
set(include ../include)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(ARCH_NAME "x64")
else()
set(ARCH_NAME "x86")
endif()
#一个简单的helloworld
project(helloWorld)
file(GLOB src helloWorld/*.*)
add_executable(helloWorld WIN32 ${src})
target_include_directories(helloWorld PRIVATE ${include})
target_link_libraries(helloWorld PRIVATE EzUI)
set_property(TARGET helloWorld PROPERTY FOLDER "demo")
#资源打包器
project(ResPackage)
file(GLOB src ./ResPackage/*.*)
add_executable(ResPackage WIN32 ${src} )
target_include_directories(ResPackage PRIVATE ${include})
target_link_libraries(ResPackage PRIVATE EzUI)
set_property(TARGET ResPackage PROPERTY FOLDER "demo")
#仿QQ登录界面
project(QQ)
#主程序
file(GLOB src CONFIGURE_DEPENDS
"./QQ/*.h"
"./QQ/*.hpp"
"./QQ/*.c"
"./QQ/*.cpp"
"./QQ/*.rc"
)
add_executable(QQ WIN32 ${src})
target_include_directories(QQ PRIVATE ${include})
target_link_libraries(QQ PRIVATE EzUI)
# 添加资源文件到"Res"筛选项下
file(GLOB_RECURSE res_files CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/QQ/res/*.*")
target_sources(QQ PRIVATE ${res_files})
source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/QQ/res" PREFIX "res" FILES ${res_files})
add_resource_package(QQ ./QQ/res ./QQ/QQ.res)
set_property(TARGET QQ PROPERTY FOLDER "demo")
#模仿酷狗音乐demo
project(kugou)
#主程序
file(GLOB src CONFIGURE_DEPENDS
"./kugou/*.h"
"./kugou/*.hpp"
"./kugou/*.c"
"./kugou/*.cpp"
"./kugou/*.rc"
)
add_executable(kugou WIN32 ${src})
# 添加资源文件到"Res"筛选项下
file(GLOB_RECURSE res_files CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/kugou/res/*.*")
target_sources(kugou PRIVATE ${res_files})
source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/kugou/res" PREFIX "res" FILES ${res_files})
target_include_directories(kugou PRIVATE ${include})
#添加常用库依赖
target_include_directories(kugou PRIVATE ./kugou/include/Common/include)
target_include_directories(kugou PRIVATE ./kugou/include/vlc/include)
#添加vlc解码器依赖
target_link_directories(kugou PRIVATE ./kugou/lib/${ARCH_NAME}/Common)
target_link_directories(kugou PRIVATE ./kugou/lib/${ARCH_NAME}/vlc)
set_property(TARGET kugou PROPERTY FOLDER "demo")
#添加引用
target_link_libraries(kugou PRIVATE EzUI)
#解决 "模块对于 SAFESEH 映像是不安全的" 的报错
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
#指定为c++编译
set_target_properties(kugou PROPERTIES LINKER_LANGUAGE CXX)
target_compile_definitions(kugou PRIVATE WIN32_LEAN_AND_MEAN)
#打包kugou/res文件夹下的所有资源 输出至kugou/kugou.res
add_resource_package(kugou ./kugou/res ./kugou/kugou.res)
#执行解压vlc的解码库
add_custom_command(
TARGET kugou
POST_BUILD
COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/kugou/extract${ARCH_NAME}.bat" "$<TARGET_FILE_DIR:kugou>"
COMMENT "Running extract.bat to conditionally extract dll.zip"
)
# TableView Demo - LayeredWindow + VLayout + TableView + 右键菜单
project(TableViewDemo)
file(GLOB src TableViewDemo/*.*)
add_executable(TableViewDemo WIN32 ${src})
target_include_directories(TableViewDemo PRIVATE ${include})
target_link_libraries(TableViewDemo PRIVATE EzUI)
set_property(TARGET TableViewDemo PROPERTY FOLDER "demo")