Cmake 找不到创建的库 (libgps)
Cmake does not find created library (libgps)
我为 libgps 创建了一个 cmake 文件(cmake File(。这工作正常,libgps.a/libgps.so(尝试两者(将被放置在/usr/local/lib 中。当我尝试使用此库时,我收到 cmake 消息,指出找不到该库。我可以检查什么来找出它不起作用的原因?
这里是 libgps 的 cmake 代码:
cmake_minimum_required(VERSION 2.6)
set(PROJECT_NAME position_logger)
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../RPiToolchainCmake/toolchain-rpi.cmake) # must be before project()
project(${PROJECT_NAME})
add_library(gps STATIC "")
#add_library(gps SHARED "")
target_link_libraries(gps m)
target_include_directories(gps PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src)
target_sources(gps PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/src/gps.h
${CMAKE_CURRENT_SOURCE_DIR}/src/nmea.h
${CMAKE_CURRENT_SOURCE_DIR}/src/serial.h)
target_sources(gps PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src/gps.c
${CMAKE_CURRENT_SOURCE_DIR}/src/nmea.c
${CMAKE_CURRENT_SOURCE_DIR}/src/serial.c)
add_executable(${PROJECT_NAME} examples/position_logger.c)
target_link_libraries(${PROJECT_NAME} gps)
install(TARGETS gps DESTINATION /usr/local/lib)
#install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)
工具链-rpi.cmake 包含交叉编译器的路径
# Define our host system
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_VERSION 1)
# Define the cross compiler locations
SET(CMAKE_C_COMPILER ${CMAKE_CURRENT_LIST_DIR}/../RaspCompiler/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER ${CMAKE_CURRENT_LIST_DIR}/../RaspCompiler/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++)
# Define the sysroot path for the RaspberryPi distribution in our tools folder
#SET(CMAKE_FIND_ROOT_PATH ${CMAKE_CURRENT_LIST_DIR}/../../RaspCompiler/arm- bcm2708/arm-rpi-4.9.3-linux-gnueabihf/sysroot/)
# Use our definitions for compiler tools
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# Search for libraries and headers in the target directories only
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
这是我的测试程序的cmake:
cmake_minimum_required(VERSION 2.6)
set(PROJECT_NAME GPS_Program)
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../../RPiToolchainCmake/toolchain-rpi.cmake) # must be before project()
project(${PROJECT_NAME})
# libgps -- Begin
set(GPS_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../libgps/src)
set(LIBGPS_PATH /usr/local/lib)
find_library(GPS_LIBRARY
NAMES libgps
PATHS ${LIBGPS_PATH}
NO_DEFAULT_PATH)
if (NOT ${GPS_LIBRARY})
message(FATAL_ERROR "LIBGPS not found in: ${LIBGPS_PATH} . Install libgps(Software/libgps)")
else()
message("LIBGPS_LIBRARY FOUND: " ${LIBGPS_PATH})
endif()
# libgps -- End
include_directories (include ${GPS_INCLUDE_DIR})
FILE(GLOB SRC_FILES src/main.cpp)
add_executable(${PROJECT_NAME} ${SRC_FILES})
#install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)
target_link_libraries(${PROJECT_NAME} ${GPS_LIBRARY})
问题是,libgps 将找不到。我每次收到消息时,都找不到libgps:
CMake Error at CMakeLists.txt:17 (message):
LIBGPS not found in: /usr/local/lib . Install libgps(Software/libgps)
我检查了程序和库是否使用相同的编译器编译。 我还添加了
#ifdef __cplusplus
extern "C"{
#endif
到 gps.h 文件
将 libgps 更改为 gps 并且从下面的 cmake 更改工作正常后。
我以为我必须从GPS_LIBRARY那里获得价值。但这就是问题所在。
错了:
if (NOT ${GPS_LIBRARY})
message("LIBGPS not found in: ${GPS_LIBRARY} . Install libgps(Software/libgps)")
else()
message("LIBGPS_LIBRARY FOUND: " ${LIBGPS_PATH})
endif()
正确:
if (NOT GPS_LIBRARY)
message("LIBGPS not found in: ${GPS_LIBRARY} . Install libgps(Software/libgps)")
else()
message("LIBGPS_LIBRARY FOUND: " ${LIBGPS_PATH})
endif()
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- VC++本机单元测试,找不到调试符号
- RegGetValue在当前用户下找不到名称
- 带有 -stdlib=libc++ 的 clang++ 9.0.1 找不到<optional>
- c++找不到具有相同哈希的无序集合元素
- 找不到以下加速库:boost_fiber
- 找不到 FLTK(缺少:FLTK_INCLUDE_DIR)
- 设置 Visual Studio for MPI: 找不到标识符错误
- "assimp/config.h"找不到,但它在文件夹中
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- C++系统找不到指定的文件错误
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- vcpkg 添加新库,但找不到
- Qt 5.11.2 (Clang 8.0 (Apple), 64 位), 找不到 QJSEngine 文件
- Cmake 找不到创建的库 (libgps)