2017-01-10 8 views
0

Ich möchte die SQLAPI-Bibliothek verwenden, ich habe alle Dateien im Include-Verzeichnis nach usr/local/include/SQLAPI und alle Dateien aus dem lib-Verzeichnis nach usr/local/lib kopiert. Die lib-Dateien heißen libsqlapi.a /libsqlapi.so und libsqlapiu.a /libsqlapiu.so.Externe Bibliothek hinzufügen cmake

Mein CMakeLists.txt sieht wie folgt aus:

project(gsl_test) 
cmake_minimum_required(VERSION 2.8) 

SET(CMAKE_CXX_FLAGS "-std=c++0x") 

aux_source_directory(. SRC_LIST) 
include_directories(usr/local/include) 
link_directories(usr/local/lib) 

add_executable(${PROJECT_NAME} ${SRC_LIST}) 
target_link_libraries(${PROJECT_NAME} libsqlapi) 

ich den Build/Linker-Fehler: -llibsqlapi nicht finden können.

Ich habe auch target_link_libraries ($ {} PROJECT_NAME SQLAPI) versuchen, aber es gibt mir zusätzliche "//usr/local/lib/libsqlapi.so unvereinbar Skipping" (und das gleiche gilt für .a) mit nicht finden können - lsqlapi

+1

'target_link_libraries ($ {PROJECT_NAME} sqlapi)'? Sie möchten "-lsqlapi", nicht "-llibsqlapi" verknüpfen. – pSoLT

+0

versuchen Sie find_library https://cmake.org/cmake/help/v3.0/command/find_library.html –

+0

@pSoLT Ich habe dies schon einmal versucht, aber bearbeitet meinen Beitrag jetzt, danke. – kassio

Antwort

0

Ok, ich werde meine Bearbeitung auf eine Antwort ändern:

der Linker Grund beschwerte, war die Tatsache, dass Sie die Bibliothek in der falschen Art und Weise festgelegt. lib ist nur Präfix - wenn Sie target_link_libraries verwenden, verwenden Sie den Rest des Bibliotheksnamens. Der Wechsel zu

target_link_libraries(${PROJECT_NAME} sqlapi)

löste dieses Problem. Der Fehler erhalten Sie jetzt

skipping incompatible //usr/local/lib/libsqlapi.so

ist wahrscheinlich verursacht durch die Tatsache, dass Sie alle Dateien von einem Pre-Build-Paket kopiert haben, und es ist nicht kompatibel mit Ihrem System. Sie müssen die Bibliothek selbst neu kompilieren.