Я пытаюсь загрузить и построить исходные файлы Stanford Library и построить из них библиотеку для использования в моем собственном проекте с использованием CLI (IDE). Я следовал инструкциям из this ответа и мой файл CMakeLists выглядит следующим образом:Попытка создать общую библиотеку в CLion/CMake
cmake_minimum_required(VERSION 3.3)
project(Stanford)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_BUILD_TYPE Release)
file(GLOB MyHeaders "*.h" /stacktrace/"*.h" private/"*.h")
file(GLOB MySources "*.cpp" /stacktrace/"*.cpp" private/"*.cpp")
include_directories(MyHeaders)
add_library(Stanford SHARED ${MySources} ${MyHeaders})
target_include_directories (Stanford PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
При открытии меню запуска, я получаю следующее:
Если я говорю это, чтобы построить в любом случае я получаю следующие ошибки.
Я изо всех сил, чтобы выяснить, что, почему мне нужно исполняемым, чтобы построить библиотеку, и что эти неопределенные ссылки означают.
«Исполняемый файл» необходим, только если вы хотите запустить свою программу в среде IDE (CLion). Поскольку ваш проект содержит только библиотеку, вам не нужно указывать что-либо в поле «Исполняемое». Как обычно, неопределенные ссылки означают, что ни один из ваших источников, встроенных в библиотеку, не содержит определения этой функции. (Вместо '/ stacktrace /' в 'файле (GLOB)' должно быть 'stacktrace /'). – Tsyvarev
О, вы правы насчет исполняемого файла, что до сих пор неясно, почему я получаю неопределенные ссылки, на самом деле IDE (автозаполнение) видит эти ссылки ... –
Определить исходный файл, который определяет пропущенные функции, и проверьте, что этот файл указан в переменной 'MySources'. Вы можете вывести значение переменной с помощью команды 'message()'. – Tsyvarev