Я использую JetBrains CLion для разработки C (C ANSI), я знаю, что это цель - C++, но моя компания работает только с C и CLion использует только систему CMake as build.Ошибка компоновщика с CMake
Моя система - это система Jessie Debian и установлены sqlite3 и libsqlite3-dev.
Я пытаюсь создать простой проект sqlite3, как это:
#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;
}
Автоматический генерироваться CMakeLists.txt является follwing.
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})
Когда сборка, либо через Clion, либо с помощью командной строки, я получаю ошибки компоновщика:
...
undefined reference to `sqlite3_prepare_v2'
undefined reference to `sqlite3_column_int'
undefined reference to `sqlite3_open'
...
Я знаю, что я должен указать на CMake, где sqlite3, но я не могу найти способ сделать это.
«find_package» и «find_library» могут это сделать, но я не могу найти способ.
Я также нашел this Cmake file, но не смог успешно использовать.
Итак, как мне интегрировать sqlite3 с Cmake?
Добавьте 'sqlite3.c' к источникам. –
@CL. вы скачаете исходный код sqlite3 и скомпилируете его вместе с проектом? Я пробовал это и получал другие ошибки компоновщика (threading и т. Д.), Более того, не нравится дублирование источников вокруг системы. Постарайтесь. –
Возможный дубликат [как добавить компоновщик или компилировать флаг в cmake-файле] (http://stackoverflow.com/questions/11783932/how-to-add-linker-or-compile-flag-in-cmake-file) – usr1234567