1.认识编译命令
1.1 解释gcc编译命令: gcc test1.cpp -o test1 pkg-config --cflags --libs opencv
- 命令解析:
-
gcc
:GNU C/C++ 编译器,用于编译C/C++代码。 -
test1.cpp
:源代码文件。 -
-o test1
:指定输出的可执行文件名为test1
。 -
pkg-config --cflags --libs opencv
:pkg-config
是一个工具,用于查询库的编译和链接参数。
pkg-config
的作用:
-
--cflags
:获取OpenCV头文件的路径(例如-I/usr/include/opencv
)。 -
--libs
:获取OpenCV库文件的路径(例如-L/usr/lib -lopencv_core -lopencv_imgproc
)。
- 工作原理:
pkg-config
会读取OpenCV的.pc
文件(通常位于/usr/lib/pkgconfig
目录下),从中提取头文件路径和库文件路径。- 编译器根据这些路径找到OpenCV的头文件和库文件,完成编译和链接。
2. 使用Makefile编译
以下是基于变量命名格式的Makefile
文件:
c
在这里插入代码片`# 定义变量
CC = gcc
CFLAGS = `pkg-config --cflags opencv`
LDFLAGS = `pkg-config --libs opencv`
SRC = test1.cpp
OBJ = test1.o
TARGET = test1
# 默认目标
all: $(TARGET)
# 编译规则
$(TARGET): $(OBJ)
$(CC) $(LDFLAGS) -o $@ $<
$(OBJ): $(SRC)
$(CC) $(CFLAGS) -c $< -o $@
# 清理生成的文件
clean:
rm -f $(OBJ) $(TARGET)`
说明:
- CC:指定编译器。
- CFLAGS:包含头文件路径。
- LDFLAGS:包含库文件路径。
- SRC:源文件。
- OBJ:目标文件。
- TARGET:最终生成的可执行文件。
- clean:清理生成的文件。
使用方法:
-
将上述内容保存为Makefile。
-
在终端中运行:
bash
make
- 清理文件:
bash
make clean
3. 使用CMake编译
以下是CMakeLists.txt
文件的编写方法:
c
# CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(OpenCVTest)
# 设置C++标准
set(CMAKE_CXX_STANDARD 11)
# 查找OpenCV库
find_package(OpenCV REQUIRED)
# 添加源文件
add_executable(${PROJECT_NAME} test1.cpp)
# 链接OpenCV库
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})
使用方法:
-
将上述内容保存为
CMakeLists.txt
。
-
创建一个构建目录并进入:
c
mkdir build
cd build
- 生成Makefile并编译:
c
cmake ..
make
- 运行生成的可执行文件:
c
./OpenCVTest
总结
pkg-config
:动态获取OpenCV的头文件和库文件路径。
Makefile
:通过变量和规则简化编译流程。
CMake
:更高级的构建工具,适合复杂的项目。