# ============================================================ # 实验 1:图像读取与保存 - CMake 构建配置文件 # ============================================================ # cmake_minimum_required: 指定构建此项目所需的最低 CMake 版本 # VERSION 3.10 是一个相对较老但足够稳定的版本(WSL Ubuntu 默认通常满足) cmake_minimum_required(VERSION 3.10) # project: 给你的项目起一个名字 # 这个名字会出现在生成的解决方案中,也方便你辨认 # 命名规则:exp + 实验编号 + 下划线 + 实验英文名 project(exp1_read_write) # set(CMAKE_CXX_STANDARD 11): 指定使用 C++11 标准 # C++11 提供了 auto、范围 for 等现代特性,代码写起来更舒服 set(CMAKE_CXX_STANDARD 11) # CMAKE_CXX_STANDARD_REQUIRED: 设为 ON 表示"必须"使用 C++11 # 如果编译器不支持 C++11,CMake 会直接报错,而不是偷偷降级 set(CMAKE_CXX_STANDARD_REQUIRED ON) # find_package: 寻找外部库,这里是寻找 OpenCV # REQUIRED 表示 OpenCV 是必须的,找不到就报错并停止配置 # CMake 会自动查找 OpenCV 的头文件路径和库文件路径 find_package(OpenCV REQUIRED) # add_executable: 告诉 CMake 我们要生成一个可执行文件 # 第一个参数 "exp1" 是可执行文件的名字(编译后运行 ./exp1) # 第二个参数 "main.cpp" 是参与编译的源文件(可以有多个) add_executable(exp1 main.cpp) # target_link_libraries: 将 OpenCV 的库文件链接到我们的可执行文件上 # ${OpenCV_LIBS} 是 find_package(OpenCV) 自动填充的变量 # 它包含了 OpenCV 所有需要的 .so 库文件路径 # 不写这一行的话,编译时会出现"未定义引用"的链接错误 target_link_libraries(exp1 ${OpenCV_LIBS}) # include_directories: 将 OpenCV 的头文件目录添加到编译器的搜索路径中 # ${OpenCV_INCLUDE_DIRS} 也是 find_package 自动填充的 # 这样编译器才能找到 #include 这样的头文件 include_directories(${OpenCV_INCLUDE_DIRS})