cmake找不到静态库

时间:2011-07-04 07:48:39

标签: c++ cmake

g ++(Ubuntu / Linaro 4.5.2-8ubuntu4)4.5.2

我有一个名为sdpAPI.a

的静态库

我正在尝试使用cmake将我的cpp文件链接到它。

我的CMakeLists.txt看起来像这样?

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

PROJECT(demo_project CXX)

IF(CMAKE_COMPILER_IS_GNUCXX)
  SET(CMAKE_C_FLAGS "-Wall -Wextra -Wunreachable-code -O0 -D_DEBUG -ggdb -m32")
ENDIF(CMAKE_COMPILER_IS_GNUCXX)

INCLUDE_DIRECTORIES(sdpapi)
LINK_DIRECTORIES(~/projects/test_sdp/sdpapi)

SET(source_files main.cpp)
SET(libs sdpAPI)

ADD_EXECUTABLE(demo ${source_files})

TARGET_LINK_LIBRARIES(demo ${libs})

我的sdpAPI.a位于此目录test_sdp / sdpapi / sdpAPI.a

我得到的错误如下:

[100%] Building CXX object CMakeFiles/demo.dir/main.cpp.o
Linking CXX executable demo                                                                                                                                   
/usr/bin/ld: cannot find -lsdpAPI                                                                                                                             
collect2: ld returned 1 exit status
make[2]: *** [demo] Error 1
make[1]: *** [CMakeFiles/demo.dir/all] Error 2
make: *** [all] Error 2

任何人都可以看到任何明显我做错的事。

3 个答案:

答案 0 :(得分:10)

我应该将sdpAPI.a重命名为libsdpAPI.a

这解决了我的问题。一个愚蠢的错误,花了我3个小时。

希望这有助于其他人。

答案 1 :(得分:2)

以前回答的其他建议。

要了解编译/链接的内容,只需使用VERBOSE = 1选项运行make即可查看make使用的完整命令。

当然还有gcc

的链接选项

答案 2 :(得分:2)

使用$ENV{HOME}代替~