#********************************************************************** # # Copyright (c) 张晓东, 罗火灵. All rights reserved. # 更多信息请访问: # http://www.vtkchina.org (VTK中国) # http://blog.csdn.net/www_doling_net (东灵工作室) # # 更新说明:适配 CMake 3.28.6 + VTK 9+ # 更新日期:2024年 # #********************************************************************** cmake_minimum_required(VERSION 3.20) project(Chap01 LANGUAGES CXX) #----------------------------------------------------------------------------- # Global Settings #----------------------------------------------------------------------------- set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) #----------------------------------------------------------------------------- # Dependencies #----------------------------------------------------------------------------- find_package(VTK REQUIRED COMPONENTS CommonCore RenderingCore RenderingOpenGL2 InteractionStyle ) #----------------------------------------------------------------------------- # Target #----------------------------------------------------------------------------- add_executable(1.3_TestVTKInstall 1.3_TestVTKInstall.cpp) target_include_directories(1.3_TestVTKInstall PRIVATE ${VTK_INCLUDE_DIRS} ) target_link_libraries(1.3_TestVTKInstall PRIVATE ${VTK_LIBRARIES} ) # VTK 模块自动初始化(VTK 9+ 必需) vtk_module_autoinit( TARGETS 1.3_TestVTKInstall MODULES ${VTK_LIBRARIES} ) #----------------------------------------------------------------------------- # Windows Specific: 创建启动脚本 #----------------------------------------------------------------------------- if(WIN32) # 获取 VTK 的二进制目录 get_filename_component(VTK_BIN_DIR "${VTK_DIR}/../../bin" ABSOLUTE) # 获取 Visual Studio 路径 if(CMAKE_VS_DEVENV_COMMAND) set(VS_DEVENV_PATH "${CMAKE_VS_DEVENV_COMMAND}") else() # 尝试从环境变量获取 set(VS_DEVENV_PATH "$ENV{VSINSTALLDIR}/Common7/IDE/devenv.exe") endif() # 解决方案文件路径 set(VS_SOLUTION_FILE "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.sln") # 为 Debug 和 Release 配置创建启动脚本 foreach(VS_BUILD_TYPE Debug Release) # 设置运行时路径 if(VS_BUILD_TYPE STREQUAL "Debug") set(PROJECT_RUNTIME_PATH "${VTK_BIN_DIR}/Debug") set(SCRIPT_SUFFIX "debug") else() set(PROJECT_RUNTIME_PATH "${VTK_BIN_DIR}/Release") set(SCRIPT_SUFFIX "release") endif() # 如果 StartVS.bat.in 模板存在,使用它 if(EXISTS "${CMAKE_SOURCE_DIR}/StartVS.bat.in") # 读取模板 file(READ "${CMAKE_SOURCE_DIR}/StartVS.bat.in" START_VS_TEMPLATE) # 替换变量 string(REPLACE "@PROJECT_RUNTIME_PATH@" "${PROJECT_RUNTIME_PATH}" START_VS_TEMPLATE "${START_VS_TEMPLATE}") string(REPLACE "@VS_SOLUTION_FILE@" "${VS_SOLUTION_FILE}" START_VS_TEMPLATE "${START_VS_TEMPLATE}") string(REPLACE "@VS_BUILD_TYPE@" "${SCRIPT_SUFFIX}" START_VS_TEMPLATE "${START_VS_TEMPLATE}") # 写入生成的脚本 file(WRITE "${PROJECT_BINARY_DIR}/StartVS_${SCRIPT_SUFFIX}.bat" "${START_VS_TEMPLATE}") else() # 创建默认的启动脚本 file(WRITE "${PROJECT_BINARY_DIR}/StartVS_${SCRIPT_SUFFIX}.bat" "@echo off\n" "echo Setting up environment for ${VS_BUILD_TYPE} build...\n" "set PATH=%PATH%;${PROJECT_RUNTIME_PATH}\n" "if exist \"${VS_DEVENV_PATH}\" (\n" " echo Starting Visual Studio...\n" " start \"\" \"${VS_DEVENV_PATH}\" \"${VS_SOLUTION_FILE}\"\n" ") else (\n" " echo ERROR: Visual Studio not found at: ${VS_DEVENV_PATH}\n" " pause\n" ")\n" ) endif() message(STATUS "Created StartVS_${SCRIPT_SUFFIX}.bat for ${VS_BUILD_TYPE} configuration") endforeach() message(STATUS "VTK Binary Directory: ${VTK_BIN_DIR}") message(STATUS "Visual Studio Path: ${VS_DEVENV_PATH}") endif() #----------------------------------------------------------------------------- # Summary #----------------------------------------------------------------------------- message(STATUS "===========================================") message(STATUS "Project: ${PROJECT_NAME}") message(STATUS "C++ Standard: ${CMAKE_CXX_STANDARD}") message(STATUS "VTK Version: ${VTK_VERSION}") message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}") if(WIN32) message(STATUS "Start Scripts: StartVS_debug.bat, StartVS_release.bat") endif() message(STATUS "===========================================")