windows c++ 包管理 vcpkg clion

时间:2025-03-30 12:23:30
# 设置 CMake 的最低版本要求 cmake_minimum_required(VERSION 3.14 FATAL_ERROR) #set(CMAKE_TOOLCHAIN_FILE F:/paperanddata/vcpkg-master/vcpkg-master/scripts/buildsystems/) #set(BUILD_USE_64BITS on) # 设定项目 project(UEngine VERSION 0.1) message(STATUS "[Project] ${PROJECT_NAME}") # 修改默认的安装路径前缀 if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX ${PROJECT_SOURCE_DIR} CACHE PATH "install prefix" FORCE) endif() # 在 Debug 模式下自动对 dll 和 lib 文件名后边加 d,但 exe 仍然需要手动设置 set(CMAKE_DEBUG_POSTFIX d) # 确定 C++ 版本 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED True) set(Qt5_DIR "D:/QT/5.12.3/msvc2017_64/lib/cmake/Qt5") if(MSVC) #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /permissive- /Zc:twoPhase-") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /permissive-") endif() # 将生成的 exe, dll, lib 等放置在 bin, lib 目录 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/bin") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${PROJECT_SOURCE_DIR}/bin") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${PROJECT_SOURCE_DIR}/bin") set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/lib") set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${PROJECT_SOURCE_DIR}/lib") set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${PROJECT_SOURCE_DIR}/lib") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/lib") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${PROJECT_SOURCE_DIR}/lib") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${PROJECT_SOURCE_DIR}/lib") # 开启 VS 的文件夹功能 set_property(GLOBAL PROPERTY USE_FOLDERS ON) include(FetchContent) find_package(UCMake) if(${UCMake_FOUND}) message(STATUS "UCMake-0.1 found") else() message(STATUS "UCMake-0.1 not found, so fetch it ...") FetchContent_Declare( UCMake GIT_REPOSITORY /Ubpa/UCMake GIT_TAG "v0.1" ) FetchContent_MakeAvailable(UCMake) message(STATUS "UCMake-0.1 fetch done") endif() # 修改默认的安装路径前缀 Ubpa_InitInstallPrefix() Ubpa_AddDep(UTemplate 0.1) Ubpa_AddDep(UDP 0.1) Ubpa_AddDep(UGM 0.1) Ubpa_AddDep(UHEMesh 0.1) Ubpa_QtInit(COMPONENTS Core Gui Widgets OpenGL) message(STATUS "----------") find_package(assimp REQUIRED) if(TARGET assimp::assimp) message(STATUS "assimp_FOUND: ${assimp_FOUND}") message(STATUS "assimp_DIR: ${assimp_DIR}") get_property(assimp_INTERFACE_INCLUDE_DIRECTORIES TARGET assimp::assimp PROPERTY INTERFACE_INCLUDE_DIRECTORIES) endif() message(STATUS "----------") find_package(tinyxml2 REQUIRED) if(TARGET tinyxml2::tinyxml2) message(STATUS "tinyxml2_FOUND: ${tinyxml2_FOUND}") message(STATUS "tinyxml2_DIR: ${tinyxml2_DIR}") endif() message(STATUS "----------") if(EXISTS "${PROJECT_SOURCE_DIR}/include/_deps/stb_image.h" AND EXISTS "${PROJECT_SOURCE_DIR}/include/_deps/stb_image_write.h") message(STATUS "found stb_image.h and stb_image_write.h") else() message(FATAL_ERROR "not found stb_image.h or stb_image_write.h in include/_deps/\n" "read for more detail") endif() message(STATUS "----------") if(EXISTS "${PROJECT_SOURCE_DIR}/src/App/UEngine/Resources") else() message(FATAL_ERROR "not found Resources/ in src/App/UEngine/\n" "read for more detail") endif() message(STATUS "----------") # /dox/ # /libeigen/eigen/-/blob/master/cmake/ # /libeigen/eigen/-/blob/master/cmake/ find_package(Eigen3 3.3 NO_MODULE) if(TARGET Eigen3::Eigen) message(STATUS "EIGEN3_FOUND: ${EIGEN3_FOUND}") message(STATUS "EIGEN3_USE_FILE: ${EIGEN3_USE_FILE}") message(STATUS "EIGEN3_DEFINITIONS: ${EIGEN3_DEFINITIONS}") message(STATUS "EIGEN3_INCLUDE_DIR: ${EIGEN3_INCLUDE_DIR}") message(STATUS "EIGEN3_INCLUDE_DIRS: ${EIGEN3_INCLUDE_DIRS}") message(STATUS "EIGEN3_ROOT_DIR: ${EIGEN3_ROOT_DIR}") message(STATUS "EIGEN3_VERSION_STRING: ${EIGEN3_VERSION_STRING}") include(${EIGEN3_USE_FILE}) else() message(WARNING "find_package(Eigen3 3.3 NO_MODULE) failed, so use include/_deps/Eigen/") if(NOT EXISTS "${PROJECT_SOURCE_DIR}/include/_deps/Eigen") message(FATAL_ERROR "not found Eigen/ in ${PROJECT_SOURCE_DIR}/include/_deps/\n" "read for more detail") endif() endif() configure_file(config/ROOT_PATH. config/ROOT_PATH.h) include_directories ( ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/include/_deps ${CMAKE_BINARY_DIR}/config # $ENV{XXX_INCLUDE_PATH} # ... ) #FIND_PACKAGE(OpenMP REQUIRED) #if(OPENMP_FOUND) # message("OPENMP FOUND") # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") # set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") #endif() Ubpa_AddSubDirsRec(src) include (InstallRequiredSystemLibraries)