message("now using Findpcre.cmake find libpcre") FIND_PATH(PCRE_INCLUDE_DIR pcre.h /usr/include/) FIND_LIBRARY(PCRE_LIBRARY libpcre.a /usr/lib/x86_64-linux-gnu/) message("lib dir: ${PCRE_LIBRARY} include files ${PCRE_INCLUDE_DIR}") if(PCRE_INCLUDE_DIR AND PCRE_LIBRARY) set(PCRE_FOUND TRUE) endif(PCRE_INCLUDE_DIR AND PCRE_LIBRARY)改造一下,如果是centos系统那去/usr/lib64下找动态库,如果是其余系统则按之前的找
时间: 2024-03-14 12:47:13 浏览: 11
可以这样改造:
```
message("now using Findpcre.cmake to find libpcre")
if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_VERSION MATCHES "centos")
FIND_PATH(PCRE_INCLUDE_DIR pcre.h /usr/include/)
FIND_LIBRARY(PCRE_LIBRARY libpcre.a /usr/lib64/)
else()
FIND_PATH(PCRE_INCLUDE_DIR pcre.h /usr/include/)
FIND_LIBRARY(PCRE_LIBRARY libpcre.a /usr/lib/x86_64-linux-gnu/)
endif()
message("lib dir: ${PCRE_LIBRARY} include files ${PCRE_INCLUDE_DIR}")
if(PCRE_INCLUDE_DIR AND PCRE_LIBRARY)
set(PCRE_FOUND TRUE)
endif(PCRE_INCLUDE_DIR AND PCRE_LIBRARY)
```
这样,如果系统是 Linux 并且版本是 centos,就会去 `/usr/lib64` 下找动态库;否则就按照之前的方式去 `/usr/lib/x86_64-linux-gnu/` 下找动态库。
相关问题
now using Findpcre.cmake find libpcre lib dir: PCRE_LIBRARY-NOTFOUND include files /usr/include now using Findyaml.cmake find libyaml lib dir: YAML_LIBRARY-NOTFOUND include files /usr/include
这是一段 CMake 的输出,说明当前的 CMake 脚本正在尝试使用 Findpcre.cmake 和 Findyaml.cmake 来查找 libpcre 和 libyaml 的位置。其中,PCRE_LIBRARY-NOTFOUND 和 YAML_LIBRARY-NOTFOUND 表示 CMake 没有找到相应的库文件,而 /usr/include 则是已经找到的头文件目录。可能需要安装相应的库文件或者修改 CMakeLists.txt 文件中的相关配置来解决这个问题。
if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_VERSION MATCHES "centos") FIND_PATH(PCRE_INCLUDE_DIR pcre.h /usr/include/) FIND_LIBRARY(PCRE_LIBRARY libpcre.a /usr/lib64/) else() FIND_PATH(PCRE_INCLUDE_DIR pcre.h /usr/include/) FIND_LIBRARY(PCRE_LIBRARY libpcre.a /usr/lib/x86_64-linux-gnu/) endif()在我的centos系统里并检测不到,因为我的centos系统里CMAKE_SYSTEM_VERSION 是4.18.0-348.el8.x86_64
这是因为 CMake 代码中使用了 `CMAKE_SYSTEM_VERSION MATCHES "centos"` 来匹配 CentOS 系统版本,但实际的 CentOS 系统版本是 "4.18.0-348.el8.x86_64",与 "centos" 不匹配,导致无法找到 libpcre 库文件。
你可以尝试修改 CMake 代码,将 "centos" 修改为 "el8",即将 `CMAKE_SYSTEM_VERSION MATCHES "centos"` 修改为 `CMAKE_SYSTEM_VERSION MATCHES "el8"`。这样就能正确匹配 CentOS 8 的系统版本了。