pkg-config 使用

`pkg-config --libs grpc++ grpc`

https://www.cnblogs.com/rainsoul/p/10567390.html

https://blog.csdn.net/makesifriend/article/details/84797995

2 为什么要有pkg-config

从上面的例子,可以看出,pkg-config给出了opencv的头文件和库的所有信息!
这有什么好处?

所有用opencv的其他程序,在编译时,只需要写“pkg-config opencv –libs –cflags”,而不需要自己去找opencv的头文件在哪里,要链接的库在哪里!省时省力!
如果你写了一个库,不管是静态的还是动态的,要提供给第三方使用,那除了给人家库/头文件,最好也写一个pc文件,这样别人使用就方便很多,不用自己再手动写依赖了你哪些库,只需要敲一个”pkg-config [YOUR_LIB] –libs –cflags”。
3 pkg-config的信息从哪里来?

很简单,有2种路径:
第一种:取系统的/usr/lib下的所有*.pc文件。
第二种:PKG_CONFIG_PATH环境变量所指向的路径下的所有*.pc文件。

这些pc文件什么时候有的?都是在你安装某个库/模块的时候,添加的。比如你往系统安装opencv时,就会在/usr/lib/目录下,放一个opencv.pc。
比如,我的PC是这样的。你可以看到,有各种各样的pc文件。

 

 

cmake中PkgConfig

https://zhuanlan.zhihu.com/p/64424440

https://blog.csdn.net/qq_32768743/article/details/102521141

https://cmake.org/cmake/help/v3.0/module/FindPkgConfig.html

https://www.jianshu.com/p/129037a4afd8

cmake_minimum_required(VERSION 3.15)
project(demo)

set(CMAKE_CXX_STANDARD 17)
find_package(PkgConfig REQUIRED)
pkg_search_module(CCRTP REQUIRED libccrtp)
add_executable(demo main.cpp)
target_link_libraries(demo  ${CCRTP_LIBRARIES})
#`pkg-config --libs grpc++ grpc`
#set(ENV{PKG_CONFIG_PATH} /usr/local/lib/pkgconfig)
#find_package(PkgConfig REQUIRED)
#pkg_search_module(GRPC REQUIRED grpc
#GRPC++ REQUIRED grpc++)
#pkg_search_module(GRPC++ REQUIRED grpc++)
#pkg_search_module(CCRTP REQUIRED libccrtp)
#target_link_libraries(demo  ${CCRTP_LIBRARIES})

 

 

 

 

你可能感兴趣的:(c/c++)