将Makefile生成的多个对象文件链接到CMake子目录

问题描述 投票:0回答:1

我有一个由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后生成的.omakemylib文件。当我尝试对此进行编译时,出现Undefined symbols for architecture x86_64函数的mylib错误。

如何链接由外部make生成的多个预编译目标文件?这个问题(how to add prebuilt object files to executable in cmake)提供了链接单个目标文件的方法。如何为所有目标文件执行此操作,并生成共享库而不是可执行文件?

c++ makefile cmake
1个回答
0
投票

我建议使用ExternalProject编译库“ mylib”(例如,通过直接调用gcc,然后使用如下代码:

add_library (slib SHARED ${SOURCES})
target_link_libraries (slib "mylib")

add_dependencies在某些情况下可能有用。

© www.soinside.com 2019 - 2024. All rights reserved.