【问题标题】:How to update the location of installed library on windows?如何在 Windows 上更新已安装库的位置?
【发布时间】:2023-03-15 10:06:01
【问题描述】:

我之前通过“cmake ..”、“make”和“make install”安装了 zlib 库。通过调用 CMakeLists.txt 中的“find_package(zlib)”函数,发现默认安装位置为“C:\Program Files (x86)\zlib”。 CMakeLists.txt的内容写成:

cmake_minimum_required(VERSION 2.4.4)
project(zlib C)

find_package(ZLIB)
message(STATUS "Found")
message(STATUS "    ${ZLIB_INCLUDE_DIRS}")

现在我通过 "cmake -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX:PATH=D:/TEST_ZLIB/ .." 重新安装这个库,得到如下结果

E:\Code\cpp\zlib-1.2.11\build>make install
[ 41%] Built target zlib
[ 46%] Built target minigzip64
[ 85%] Built target zlibstatic
[ 90%] Built target example
[ 95%] Built target minigzip
[100%] Built target example64
Install the project...
-- Install configuration: ""
-- Installing: D:/TEST_ZLIB/lib/libzlib.dll.a
-- Installing: D:/TEST_ZLIB/bin/libzlib.dll
-- Installing: D:/TEST_ZLIB/lib/libzlibstatic.a
-- Installing: D:/TEST_ZLIB/include/zconf.h
-- Installing: D:/TEST_ZLIB/include/zlib.h
-- Installing: D:/TEST_ZLIB/share/man/man3/zlib.3
-- Installing: D:/TEST_ZLIB/share/pkgconfig/zlib.pc

但是,函数 find_package(zlib) 仍然会报告之前的位置:

E:\Code\cpp\test_cmake\build>cmake ..
-- Found
--     C:/Program Files (x86)/zlib/include
-- Configuring done
-- Generating done
-- Build files have been written to: E:/Code/cpp/test_cmake/build

如何更新该库的位置?任何帮助将不胜感激。

【问题讨论】:

    标签: c++ windows cmake


    【解决方案1】:

    find_package() 调用的结果是缓存,所以第二次运行它实际上并不搜索,而是使用缓存的值。

    CMake 缓存包含在二进制目录中的CMakeCache.txt 文件中。所以你有3种可能让find_package再次搜索:

    1. 删除整个二进制目录

      cmake 的下一次调用将是“新鲜的”:它将搜索编译器、所有需要的包等等。

    2. 从二进制目录中删除 CMakeCache.txt 文件。

      cmake 的下一次调用将是“新鲜的”,与第一种情况相同。

    3. CMakeCache.txt删除 ,对应于您的包。

      例如,要强制find_package(ZLIB) 再次搜索,您可以删除所有包含子字符串“zlib”的条目(不区分大小写)。

      cmake 的下一次调用将使用编译器、其他包的缓存设置,但再次搜索 ZLIB。

    3d 变体需要更多的操作,但它会导致更快的cmake 调用。

    第 1 和第 2 变体很容易执行,并且它们的效果几乎相同。它们都会导致“慢”cmake 调用,这需要再次执行所有检查。但是你可以确定你不会在不一致的情况下留下缓存设置。

    在进行故障排除时,请始终选择第一种或第二种变体!

    【讨论】:

      猜你喜欢
      • 2013-01-27
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      • 2013-01-02
      相关资源
      最近更新 更多