C++ 如何在windows上更新已安装库的位置?
我以前是通过“cmake..”、“make”和“makeinstall”安装zlib库的。通过调用CMakeLists.txt中的函数“find_package(zlib)”,默认安装位置为“C:\Program Files(x86)\zlib”。CMakeLists.txt的内容如下:C++ 如何在windows上更新已安装库的位置?,c++,windows,cmake,C++,Windows,Cmake,我以前是通过“cmake..”、“make”和“makeinstall”安装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
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\u INSTALL\u PREFIX:PATH=D:/TEST\u 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
如何更新此库的位置?任何帮助都将不胜感激。调用
find_package()
的结果是缓存的,因此第二次运行它实际上不会搜索,而是使用缓存的值
CMake缓存包含在二进制目录中的CMakeCache.txt
文件中。因此,forcefind_package
有3种可能再次搜索:
cmake
将是“新鲜的”:它将搜索编译器、所有需要的包,等等cmakcache.txt
文件
下一次调用cmake
将是“新鲜的”,与第一种情况相同cmakcache.txt
中删除与您的包相对应的行
例如,对于forcefind_package(ZLIB)
再次搜索,您可以删除子字符串“ZLIB”(不区分大小写)中包含的所有条目
下一次调用cmake
将使用编译器和其他包的缓存设置,但再次搜索ZLIBcmake
调用
第一种和第二种变体易于执行,其效果几乎相同。它们都会导致“slow”cmake
调用,需要再次执行所有检查。但您可以确定,在不一致的情况下,不会保留缓存设置
进行故障排除时,请始终选择第一个或第二个车型