У меня есть список объектных файлов, созданных Makefile, который хранится в директории скажем mylib
. Я пытаюсь связать эти объектные файлы во время компиляции одного из подкаталогов в моем проекте (я не хочу создавать исполняемый файл). Вот мой CMakeLists.txt
файл
cmake_minimum_required(VERSION 3.5.1)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED on)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -g")
set( CMAKE_EXPORT_COMPILE_COMMANDS ON )
file(GLOB SOURCES "*.cpp" ".hpp")
include_directories(mylib)
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/mylib)
add_library(slib SHARED ${SOURCES})
То есть каталог mylib
содержит файлы .h
, .cc
и .o
, которые я сгенерировал после запуска make
в mylib
. Когда я пытаюсь скомпилировать это, я получаю ошибку Undefined symbols for architecture x86_64
для mylib
функций.
Как связать несколько предварительно скомпилированных объектных файлов, сгенерированных внешним make
? Этот вопрос ( о том, как добавить предварительно собранные объектные файлы в исполняемый файл в cmake ) дает способ связать один объектный файл. Как мне сделать это для всех объектных файлов и создать общую библиотеку вместо исполняемого файла?