Ich benutze JetBrains CLion für reine C (C ANSI) Entwicklung, ich weiß, es ist Ziel C++, aber meine Firma arbeitet nur mit C und CLion verwendet nur CMake als Build-System.Linker Fehler mit CMake
Mein System ist ein Debian Jessie System und sqlite3 und libsqlite3-dev sind installiert.
Ich versuche, ein einfaches sqlite3 Projekt wie diese zu bauen:
#include <sqlite3.h>
#include <stdio.h>
int main() {
sqlite3 *sqlConnection;
int ret;
ret = sqlite3_open("database/path.db, &sqlConnection);
if (ret) {
printf("Ups ... can't open %d", ret);
}
do_some_queries(sqlConnection);
return 0;
}
Das automatisch generierte CMakeLists.txt das follwing ist.
cmake_minimum_required(VERSION 3.3)
project(Project)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp)
add_executable(Project ${SOURCE_FILES})
Wenn bauen, entweder durch Clion, entweder über die Befehlszeile, I-Linker Fehler erhalten:
...
undefined reference to `sqlite3_prepare_v2'
undefined reference to `sqlite3_column_int'
undefined reference to `sqlite3_open'
...
Ich weiß, ich CMake müssen darauf hinweisen, wo sqlite3 ist, aber ich kann ein nicht gefunden Art und Weise dies zu tun.
"find_package" und "find_library" können es tun, aber ich kann nicht finden, wie.
Ich habe auch this Cmake file gefunden, konnte aber nicht erfolgreich verwendet werden.
Also, wie integriere ich sqlite3 mit Cmake?
Fügen Sie 'sqlite3.c' zu den Quellen hinzu. –
@ CL. Sie sagen, sqlite3 Quellcode herunterladen und zusammen mit dem Projekt zu kompilieren? Ich habe es versucht und bekam andere Linker-Fehler (Threading und etc), außerdem, duplizieren Quellen nicht um das System herum. Wird es hart versuchen. –
Mögliches Duplikat von [Wie Linker oder Compiler-Flag in cmake-Datei hinzufügen] (http://stackoverflow.com/questions/11783932/how-to-add-linker-or-compile-flag-in-cmake-file) – usr1234567