OpenCV_INCLUDE_DIRS 和 OpenCV_LIBS 都是前面一条 find_package(OpenCV) 里面设定的。那个不叫宏,叫变量。find_package() 其实是运行另一个 cmake 模块,那个 cmake 模块主要干的事情就是判断 c 库在哪个路径,并设置相应的变量。
模块名+ _INCLUDE_DIRS 和模块名 + _LIBS 是约定俗成的,改了 find_package() 里面的模块名,两个变量名称多半也会跟着变。具体的要去看 find_package() 调用的那个 cmake 文件。
cmake 本身其实是一种特殊的编程语言。同样有赋值、if/else、循环。只是语法比较怪异。
第二个问题我也一直没解决好。
ps: 这个帖子是不是发到 linuxdev 版更好一些。
【 在 bigsen (大海无量) 的大作中提到: 】
: 标 题: CMake中的宏定义问题
: 发信站: 水木社区 (Sat Jan 23 13:06:33 2021), 站内
:
: CMakeLists.txt文件中,有很多直接就用的宏或变量,但这些都是在哪定义的?文件中没有找到。是系统宏么。
: 举个例子:比如下面这个CMakeLists。
: 1、OpenCV_INCLUDE_DIRS是一个宏吧?OpenCV_LIBS是一个变量?它们的值等于什么?定义的地方在哪?
: 2、/opt/中已经有新编好的OpenCV,但该cmake默认引用的系统自带的,我想修改为opt下的,该怎么改?
: 3、find_package中的参数的名字和库名字有什么关联约束?比如OpenCV换成OpenCV3的话,需要做哪些相应的改变?
:
: find_package(OpenCV)
: include_directories(OpenCV_INCLUDE_DIRS)
:
: add_executable(xxx ${PROJECT_SOURCE_DIR}/xxx.cpp)
: target_link_libraries(xxx nvinfer)
: target_link_libraries(xxx cudart)
: target_link_libraries(xxx myplugins)
: target_link_libraries(xxx ${OpenCV_LIBS})
:
: add_definitions(-O2 -pthread)
: --
:
: ※ 来源:·水木社区
http://www.newsmth.net·[FROM: 223.88.88.*]
--
FROM 110.81.13.*