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
时间: 2024-03-14 10:49:40 浏览: 14
这是因为 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 的系统版本了。
相关问题
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下找动态库,如果是其余系统则按之前的找
可以这样改造:
```
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/` 下找动态库。
没有cmake_uninstall.cmake.in怎么生成cmake_uninstall.cmake的
通常情况下,CMake并不会自动生成`cmake_uninstall.cmake`文件。但你可以手动创建这个文件并将其添加到你的项目中。以下是一些步骤:
1. 创建一个名为`cmake_uninstall.cmake.in`的文件,文件内容可以为空。
2. 在你的CMakeLists.txt文件中,添加以下代码:
```
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)
```
3. 添加以下代码来创建一个`uninstall`目标:
```
add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
```
4. 运行`make uninstall`即可卸载你的项目。
注意:如果你的项目是一个库,那么你需要在安装的时候生成`cmake_uninstall.cmake`。你可以在`make install`目标中添加以下代码来实现:
```
install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)")
```
这样,当你运行`make uninstall`时,会自动调用`cmake_uninstall.cmake`文件中的卸载命令。