在 Cmake 中将 poppler 用作子项目且设置不正确 CMAKE_MODULE_PATH
Using poppler as a subproject in Cmake with `CMAKE_MODULE_PATH` set incorrectly
我是 CMake 的新手,我不确定自己在做什么
我通过 CMake 将 poppler 用作我的应用程序的库。我已将其作为子模块导入。
如果我使用 add_subdirectory(...)
在我的顶级 CMake 文件中包含 popper,它会出现以下错误
[cmake] CMake Error at external/poppler/CMakeLists.txt:7 (include):
[cmake] include could not find requested file:
[cmake]
[cmake] PopplerDefaults
[cmake]
[cmake]
[cmake] CMake Error at external/poppler/CMakeLists.txt:8 (include):
这很可能是因为 CMAKE_MODULE_PATH
不正确。
经过一些挖掘,看起来 poppler 正在设置模块路径而不是附加到它。
https://gitlab.freedesktop.org/poppler/poppler/-/blob/master/CMakeLists.txt#L5
所以我似乎无法真正覆盖它。
我的(可能过于复杂的)设置在这里,poppler 行注释掉了。
https://github.com/bdurrani/cmake-test/blob/master/CMakeLists.txt#L69
如果我从 poppler 文件夹中 运行 cmake,这工作正常。
有办法解决这个问题吗?你如何处理这种情况?
因此,在 中,您的 CMakeLists.txt 只需在包含子项目之前存储和恢复 CMAKE_MODULE_PATH。
set(tmp ${CMAKE_MODULE_PATH})
add_subdirectory(...)
# suffix the poppler stuff too.
set(CMAKE_MODULE_PATH "${tmp};${CMAKE_MODULE_PATH}")
您也可以单独通知 poppler
项目的开发人员该问题,或者最多为他们创建一个补丁来解决该问题。
我是 CMake 的新手,我不确定自己在做什么
我通过 CMake 将 poppler 用作我的应用程序的库。我已将其作为子模块导入。
如果我使用 add_subdirectory(...)
在我的顶级 CMake 文件中包含 popper,它会出现以下错误
[cmake] CMake Error at external/poppler/CMakeLists.txt:7 (include):
[cmake] include could not find requested file:
[cmake]
[cmake] PopplerDefaults
[cmake]
[cmake]
[cmake] CMake Error at external/poppler/CMakeLists.txt:8 (include):
这很可能是因为 CMAKE_MODULE_PATH
不正确。
经过一些挖掘,看起来 poppler 正在设置模块路径而不是附加到它。
https://gitlab.freedesktop.org/poppler/poppler/-/blob/master/CMakeLists.txt#L5
所以我似乎无法真正覆盖它。
我的(可能过于复杂的)设置在这里,poppler 行注释掉了。 https://github.com/bdurrani/cmake-test/blob/master/CMakeLists.txt#L69
如果我从 poppler 文件夹中 运行 cmake,这工作正常。
有办法解决这个问题吗?你如何处理这种情况?
因此,在 中,您的 CMakeLists.txt 只需在包含子项目之前存储和恢复 CMAKE_MODULE_PATH。
set(tmp ${CMAKE_MODULE_PATH})
add_subdirectory(...)
# suffix the poppler stuff too.
set(CMAKE_MODULE_PATH "${tmp};${CMAKE_MODULE_PATH}")
您也可以单独通知 poppler
项目的开发人员该问题,或者最多为他们创建一个补丁来解决该问题。