cmake не может найти статическую библиотеку - PullRequest
4 голосов
/ 04 июля 2011

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

У меня есть статическая библиотека с именем sdpAPI.a

Я пытаюсь связать свой файл cpp с помощью cmake.

Мой 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

Ошибка Iполучаю следующее:

[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 ]

10 голосов
/ 04 июля 2011

Я должен был переименовать sdpAPI.a в libsdpAPI.a

Это решило мою проблему. Глупая ошибка, которая стоила мне 3 часа.

Надеюсь, это поможет кому-то еще.

2 голосов
/ 05 июля 2011

Используйте $ENV{HOME} вместо ~.

2 голосов
/ 05 июля 2011

Дополнительные советы для предыдущего ответа.

Чтобы понять, что происходит с компиляцией / компоновкой, просто запустите make с опцией VERBOSE = 1, чтобы увидеть полную команду, используемую make.

И, конечно, варианты ссылок для gcc

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...