优化构建

This commit is contained in:
DevWiki 2024-09-26 20:06:56 +08:00
parent 9371d67b00
commit c72ef9cb47
6 changed files with 141 additions and 102 deletions

View File

@ -49,12 +49,20 @@ endif()
target_link_libraries(DeviceManager PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) target_link_libraries(DeviceManager PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
set(WinDevice_INCLUDE_DIR "../WinDevice/output/include/") if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(WinDevice_THIRD_INCLUDE_DIR "../WinDevice/output/third_lib/") set(ARCH_DIR "x64")
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(WinDevice_LIB_DIR "../WinDevice/output/debug/")
else() else()
set(WinDevice_LIB_DIR "../WinDevice/output/release/") set(ARCH_DIR "x86")
endif()
set(WinDevice_OUTPUT ${CMAKE_SOURCE_DIR}/../WinDevice/output)
#
set(WinDevice_INCLUDE_DIR "${WinDevice_OUTPUT}/include/")
set(WinDevice_THIRD_INCLUDE_DIR "${WinDevice_OUTPUT}/third_lib/")
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(WinDevice_LIB_DIR "${WinDevice_OUTPUT}/${ARCH_DIR}/debug/")
else()
set(WinDevice_LIB_DIR "${WinDevice_OUTPUT}/${ARCH_DIR}/release/")
endif() endif()
# 使 find_library # 使 find_library
find_library(WinDevice_LIB find_library(WinDevice_LIB
@ -66,23 +74,24 @@ include_directories(${WinDevice_INCLUDE_DIR} ${WinDevice_THIRD_INCLUDE_DIR})
# #
target_link_libraries(DeviceManager PRIVATE ${WinDevice_LIB}) target_link_libraries(DeviceManager PRIVATE ${WinDevice_LIB})
# if (CMAKE_BUILD_TYPE STREQUAL "Debug") if (CMAKE_BUILD_TYPE STREQUAL "Debug")
# # Debug WinDevice # Debug WinDevice
# add_subdirectory(../WinDevice WinDevice) add_subdirectory(../WinDevice WinDevice)
# # WinDevice # WinDevice
# target_include_directories(DeviceManager PRIVATE target_include_directories(DeviceManager PRIVATE
# ../WinDevice/src ../WinDevice/src
# include/third_lib include/third_lib
# ) )
# target_link_libraries(DeviceManager PRIVATE WinDevice) target_link_libraries(DeviceManager PRIVATE WinDevice)
# else() else()
# # Release WinDevice # Release WinDevice
# target_link_libraries(DeviceManager PRIVATE WinDevice) target_link_libraries(DeviceManager PRIVATE WinDevice)
# # Release WinDevice # Release WinDevice
# target_include_directories(DeviceManager PRIVATE target_include_directories(DeviceManager PRIVATE
# ../WinDevice/lib ${WinDevice_INCLUDE_DIR}
# ) ${WinDevice_THIRD_INCLUDE_DIR}
# endif() )
endif()
set_target_properties(DeviceManager PROPERTIES set_target_properties(DeviceManager PROPERTIES

33
DeviceManager/build.bat Normal file
View File

@ -0,0 +1,33 @@
@echo on
chcp 65001
setlocal enabledelayedexpansion
set arch=x64
set build_type=Debug
rem 如果参数1不为空设置架构
if not "%~1" == "" (
set arch=%~1
)
rem 如果参数2不为空设置构建类型
if not "%~2" == "" (
set build_type=%~2
)
rem 删除旧的构建目录
if exist "build" (
rmdir "build" /s /q
)
rem 创建新的构建目录并进入
mkdir "build"
cd build
rem 运行 CMake 配置命令
cmake .. -G "Visual Studio 17 2022" -A %arch% -DCMAKE_BUILD_TYPE=%build_type%
rem 执行构建
cmake --build . --config %build_type%
endlocal

View File

@ -85,7 +85,7 @@ target_include_directories(WinDevice
target_link_libraries(WinDevice PRIVATE ${DirectX_LIBS}) target_link_libraries(WinDevice PRIVATE ${DirectX_LIBS})
# output # output
set(OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/output) set(OUTPUT_DIR ${CMAKE_SOURCE_DIR}/output)
# #
if (CMAKE_SIZEOF_VOID_P EQUAL 8) if (CMAKE_SIZEOF_VOID_P EQUAL 8)
set(ARCH_DIR "x64") set(ARCH_DIR "x64")
@ -102,8 +102,7 @@ set_target_properties(WinDevice PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIR}/${ARCH_DIR}/release" ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIR}/${ARCH_DIR}/release"
LIBRARY_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIR}/${ARCH_DIR}/release" LIBRARY_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIR}/${ARCH_DIR}/release"
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIR}/${ARCH_DIR}/release" RUNTIME_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIR}/${ARCH_DIR}/release")
)
if (CMAKE_BUILD_TYPE STREQUAL "Debug") if (CMAKE_BUILD_TYPE STREQUAL "Debug")
# Debug # Debug
@ -116,14 +115,9 @@ if (CMAKE_BUILD_TYPE STREQUAL "Debug")
PRIVATE ${Third_Include_DIR} ${Windows_Kits_UM_DIR} ${Windows_Kits_SHARED_DIR}) PRIVATE ${Third_Include_DIR} ${Windows_Kits_UM_DIR} ${Windows_Kits_SHARED_DIR})
target_link_libraries(WinDeviceTest PRIVATE ${DirectX_LIBS}) target_link_libraries(WinDeviceTest PRIVATE ${DirectX_LIBS})
set_target_properties(WinDeviceTest PROPERTIES set_target_properties(WinDeviceTest PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIR}/debug" ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIR}/${ARCH_DIR}/debug"
LIBRARY_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIR}/debug" LIBRARY_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIR}/${ARCH_DIR}/debug"
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIR}/debug" RUNTIME_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIR}/${ARCH_DIR}/debug")
ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIR}/release"
LIBRARY_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIR}/release"
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIR}/release"
)
else () else ()
# Release # Release
set(LIBRARY_OUTPUT_PATH "${OUTPUT_DIR}/release") set(LIBRARY_OUTPUT_PATH "${OUTPUT_DIR}/release")

33
WinDevice/build.bat Normal file
View File

@ -0,0 +1,33 @@
@echo on
chcp 65001
setlocal enabledelayedexpansion
set arch=x64
set build_type=Debug
rem 如果参数1不为空设置架构
if not "%~1" == "" (
set arch=%~1
)
rem 如果参数2不为空设置构建类型
if not "%~2" == "" (
set build_type=%~2
)
rem 删除旧的构建目录
if exist "build" (
rmdir "build" /s /q
)
rem 创建新的构建目录并进入
mkdir "build"
cd build
rem 运行 CMake 配置命令
cmake .. -G "Visual Studio 17 2022" -A %arch% -DCMAKE_BUILD_TYPE=%build_type%
rem 执行构建
cmake --build . --config %build_type%
endlocal

View File

@ -1,22 +0,0 @@
// WinDeviceDemo.cpp: 定义应用程序的入口点。
//
#include "WinDeviceDemo.h"
#include "Video/ScreenManager.h"
using namespace std;
int main()
{
HRESULT hr = S_OK;
hr = CoInitialize(nullptr);
if (FAILED(hr)) {
return 0;
}
cout << "Hello CMake." << endl;
ScreenManager screenManager;
screenManager.UpdateDisplayInfo();
CoUninitialize();
return 0;
}

View File

@ -1,8 +0,0 @@
// WinDeviceDemo.h: 标准系统包含文件的包含文件
// 或项目特定的包含文件。
#pragma once
#include <iostream>
// TODO: 在此处引用程序需要的其他标头。