gpt4 book ai didi

c++ - 覆盖 find_package 的默认搜索顺序

转载 作者:行者123 更新时间:2023-11-28 01:24:38 31 4
gpt4 key购买 nike

我试图避免 cmake find_package 使用系统中的 FindJPEG.cmake,我创建了 FindJPEG.cmake 的拷贝并稍微更改它并在其中放入一条消息(状态“...”)能够区分它,比如:

...
message(STATUS "MY CUSTOM JPEG FIND SCRIPT")
if(NOT JPEG_LIBRARY)
message(STATUS "MY CUSTOM JPEG FIND SCRIPT >> FIRST TIME FIND LIBRARY")
find_library(JPEG_LIBRARY_RELEASE NAMES ${jpeg_names})
...

然后我将这个更改后的 scritp 复制到/my/custom/module/path 然后我开始我的 cmake 配置:

cmake .. -DCMAKE_MODULE_PATH=/my/custom/module/path;${CMAKE_MODULE_PATH}

如果在我的 CMakeLists.txt 中我只调用 find_package(JPEG) 一切正常(显示自定义消息)但是后来我在我的 CMakeLists.txt 中添加了 Jasper 依赖项,它也依赖于 JPEG。所以我只需要做一个 find_package(Jasper) JPEG 依赖项将由 jasper 加载。

最后一个问题是我的 FindJPEG.cmake 更改脚本现在没有被调用,我认为这是因为 CMAKE_MODULE_PATH 搜索顺序首先从当前目录开始......并且不遵循我的 cmake 指定的顺序命令行。

我们可以改变这种行为吗,或者如果我解释错了,有人可以更好地解释为什么会这样吗?

谢谢努诺

最佳答案

如果您使用自己的自定义模块路径,请使用:

SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake)

在项目开始时,这是通常的模式,使用 CMakecmake 文件所在的 fodler。

然后您可能还想查看一些变量,例如 CMAKE_LIBRARY_PATH这可能足以更改搜索路径而无需重写新的 FindJPEG.cmake

关于c++ - 覆盖 find_package 的默认搜索顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54459065/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com