首页 > 解决方案 > CMAKE 静态库构建良好,但共享库链接失败

问题描述

我有一个具有以下结构的简单 c++ 程序。我在 Visual Studio 中使用 cmake 来构建它。

项目描述:

问题详情:

当 iMath 作为静态库构建时,它构建得很好。但是,当它构建为共享库时,会导致LNK1104 无法打开文件 src\iMath\MathLib.lib错误。

在此处输入图像描述

级别的CMakeLists.txt

cmake_minimum_required (VERSION 3.8)
project (module4)
set(UTILS_SOURCE_DIR ${CMAKE_SOURCE_DIR}/src/utils)

# add subdirectory
add_subdirectory(src)


# Add source to this project's executable.

add_executable (
calculator
module.cpp 
${UTILS_SOURCE_DIR}/myprint.cpp
)

target_include_directories(calculator PUBLIC ${UTILS_SOURCE_DIR})

target_link_libraries(calculator PUBLIC iMathLib)

src级别的CmakeLists.txt

cmake_minimum_required (VERSION 3.8)
add_subdirectory(iMath)

iMath级别的CMakeLists.txt

cmake_minimum_required (VERSION 3.8)

project(iMath)

set(SRC_FILES src/addition.cpp )

add_library(iMathLib SHARED ${SRC_FILES})

target_include_directories(iMathLib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)

ROOT级别的module.h

#pragma once

#include <iostream>
#include <string>
#include "addition.h"
#include "myprint.h"

iMATH级别的最后一个CMakeLists.txt中,如果我将SHARED切换为 STATIC,一切正常。

有人可以指出我应该改变什么以便它与iMath共享以及构建的正确方向吗?

标签: c++cmakebuild

解决方案


推荐阅读