以前在Mac下写C++用Xcode,写服务器代码用vim+scons编译,这段时间用CLion,发现IDE是真香。CLion使用cmake编译工具,编译工程依赖CMakelists.txt文件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
cmake_minimum_required(VERSION 3.15)
project(helloWorld)
set(CMAKE_CXX_STANDARD 11)
# ffmpeg library
# pkg-config --libs --cflag libavformat libavutil
set(ENV{PKG_CONFIG_PATH} /usr/local/Cellar/ffmpeg/4.2.2_2/lib/pkgconfig)
find_package(PkgConfig)
pkg_search_module(AVFORMAT REQUIRED libavformat)
pkg_search_module(AVUTIL REQUIRED libavutil)
# just print library messages
message(STATUS ${AVFORMAT_LIBRARIES})
message(STATUS ${AVFORMAT_INCLUDE_DIRS})
# include & link directories
include_directories(${AVFORMAT_INCLUDE_DIRS} ${AVUTIL_INCLUDE_DIRS})
link_directories(${AVFORMAT_LIBRARY_DIRS} ${AVUTIL_LIBRARY_DIRS})
# add source files
add_executable(metadata main.cpp)
# link target
target_link_libraries(metadata ${AVFORMAT_LIBRARIES} ${AVUTIL_LIBRARIES})
|
上面这个例子是生成metadata二进制的CMakelists例子
- 首先设置 PKG_CONFIG_PATH 环境变量,也就是 libavformat.pc 所在的路径
- find_package(PkgConfig) 查找 pkg-config 工具
- 查找 libavformat, libavutil, include_directories用于提供头文件路径,即-I/path/include,link_directories用于提供链接的路径,即 -L/path/lib
- 添加二进制源文件
- 链接目标,target_link_libraries 将目录与lib链接起来,即 -lavformat -lavutl
文章作者
李龙
上次更新
2021-03-20
许可协议
知识共享署名-非商业性使用 4.0 国际许可协议