Home Forums GAMES在线课程(现代计算机图形学入门)讨论区 分享一个在Windows上用CMake+VSCode做作业的环境

Viewing 0 reply threads
  • Author
    Posts
    • #6913 Score: 2
      Misa_XU
      Participant
      2 pts

      0. 在VSCode里安装CMake Tools和C/C++

      1. 用CMake-GUI安装OpenCV
      安装步骤我参考了这篇文章,它同样适用于对opencv4的安装。

      Install OpenCV 3 on Windows

      另,文章指出,我们需要在path里面添加一个名为 “OPENCV_DIR”的环境变量,它的值是“OpenCVConfig.cmake”所在的文件夹。 这个文件定义了“OpenCV_LIBS”和“OpenCV_INCLUDE_DIRS”两个变量,并告诉我们,当我们需要使用OpenCV时,需要在CMakeLists.txt里加入如下两行:

      find_package(OpenCV REQUIRED)
      target_link_libraries(MY_TARGET_NAME ${OpenCV_LIBS})

      2. 创建一个新的文件夹,我把它命名为GAMES101

      3. 下载Eigen
      这是一个无需安装的header-only库,我把它解压并重命名为’eigen3’,放在了GAME101下面,到目前为止,这个文件夹的结构为

      GAMES101/
      – eigen3/

      4. 添加并配置CMakeLists.txt

      cmake_minimum_required (VERSION 2.8.11) #cmake版本要求
      project (GAMES101) #命名这个project
      include_directories(${PROJECT_SOURCE_DIR}) #引用Eigen,${PROJECT_SOURCE_DIR}即GAMES101/的绝对路径,代码框架里引用Eigen的方式是<eigen3/Eigen/Eigen>

      5. 配置作业1的编译环境
      这里拿作业1举例,因为它同时用到了OpenCV和Eigen

      5.1 在GAMES101下创建名为1的文件夹
      5.2 在GAMES101下的CMakeLists.txt的末尾加入

      add_subdirectory(1) # 1为作业1的文件夹的名字,它命令CMAKE执行文件夹1下的CMakeLists.txt

      5.2 将作业1的代码框架拷贝到文件夹1下
      5.3 在文件夹1下创建并配置CMakeLists.txt

      aux_source_directory (. DIR) # '.'代表当前文件夹 这个指令将遍历当前文件夹下的所有源代码,将它作为一个 list存入变量‘DIR’中
      
      set(IDX 1) #定义一个变量‘IDX’,它的值为文件夹的名字,1
      add_executable (${IDX} ${DIR}) #在整个工程里添加一个名为${IDX}的可执行文件,可执行文件的源代码是${DIR}
      
      find_package(OpenCV REQUIRED)
      target_link_libraries(${IDX} ${OpenCV_LIBS}) #在第二步里提到的配置OPENCV的方法
      
      set(CMAKE_CXX_STANDARD 17) #配置C++ Standard
      
      set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin/${IDX}) #配置可执行文件的输出路径

      到目前为止,GAMES101的结构为

      | CMakeLists.txt
      |
      +—1
      | CMakeLists.txt
      | main.cpp
      | rasterizer.cpp
      | rasterizer.hpp
      | Triangle.cpp
      | Triangle.hpp
      |
      \—eigen3

      6. 用VSCODE编辑代码
      安装CMake Tools之后,VSCODE会自动读取CMakeLists.txt并进行相应的代码高亮

      7. 用CMAKE创建VS PROJECT
      在Terminal里,进入GAMES101/下输入

      mkdir build #新建build文件夹
      cd build #进入build
      cmake .. #用默认的Generator根据build的父文件夹即GAMES101/下的CMakeLists.txt创建VS Project

      8. 用CMAKE BUILD可执行文件
      在Terminal里,进入GAMES101/build/下输入

      cmake –build . 或者 cmake –build . –config Release

      如果沒有error的话,我们将在GAMES101\build\bin\1\Release里找到1.exe

      9. 添加更多的作业
      9.1 在GAMES101下添加新的文件夹,并在里面按照步骤5配置文件夹下的CMakeLists.txt
      9.2 在GAMES101下的CMakeLists.txt里,你可以通过配置一个或多个 add_subdirectory(<文件夹>) 去同时build一个或多个exe

      This post has received 2 votes up.
      • This topic was modified 3 years, 8 months ago by Misa_XU.
Viewing 0 reply threads
  • You must be logged in to reply to this topic.