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" "$" 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")