使CMake在重新配置时不搜索Python组件



我使用FetchContent将谷歌测试添加到我的构建中,如下所示:

FetchContent_Declare(googletest
GIT_REPOSITORY https://github.com/google/googletest
GIT_TAG main
)
FetchContent_MakeAvailable(googletest)

但在我这样做之后,每次CMake需要重新运行其配置/生成步骤时,大约需要25秒。当对构建进行迭代更改时,这确实会干扰我的工作流程。

C:NSEW>cmake --build .
[0/2] Re-checking globbed directories...
[1/2] Re-running CMake...
| It takes about 20 seconds until the following output is shown |
-- Could NOT find Python (missing: Python_EXECUTABLE Interpreter)
-- Found SFML 2.5.1 in C:/install/lib/cmake/SFML
-- Configuring done
-- Generating done
-- Build files have been written to: C:/NSEW
[0/2] Re-checking globbed directories...
ninja: no work to do.

googletest有一个可选的Python依赖项,但由于没有安装Python,CMake会尝试所有可能的安装路径,这需要很长时间。CMake似乎在每次重新配置时都会进行此搜索。如何阻止CMake对我不需要的组件进行如此缓慢的搜索?

我尝试将缓存变量Python_EXECUTABLE设置为NO/Python-NOTFOUND,但这似乎没有帮助。

您可以使用CMAKE_DISABLE_FIND_PACKAGE_<PackageName>禁用任何非REQUIREDfind_package(PackageName)命令。这个变量至少从CMake 3.0开始就存在了,所以它通常会起作用。

您可以在FetchContent_MakeAvailable之前设置它,然后在unset()之后设置它。否则,只需在cmake命令行设置CMAKE_DISABLE_FIND_PACKAGE_Python=TRUE(和/或...Python3(。

googletest/CMake使用的FindPython模块有一个Python_FIND_IMPLEMENTATIONS变量,您可以进行配置。这是CMake应该寻找的Python实现的允许列表。

如果将其配置为空字符串,则不应花费任何时间搜索Python安装。

cmake -DPython_FIND_IMPLEMENTATIONS:STRING="" <build directory>

相关内容

  • 没有找到相关文章

最新更新