Линкует .lib вместо .dll

Рейтинг: 0Ответов: 0Опубликовано: 02.06.2023

CMakeLists.txt:

cmake_minimum_required(VERSION 3.5)
project(HelloWorld)

add_executable(HelloWorld main.cpp)

add_library(MessageLib
    SHARED
    lib/hello.hpp
    lib/hello.cpp
)
target_link_libraries(HelloWorld MessageLib)

При сборке проекта (cmake --build), линкер почему-то пытается подключить статическую библиотеку (.lib), но при этом cmake генерирует динамическую (.dll). То есть, если вместо SHARED указать STATIC, то проект будет успешно собран.

Ошибка при сборке с параметром SHARED:

LINK : fatal error LNK1104: не удается открыть файл "Debug\MessageLib.lib"

UPD: На Linux все сработало, без проблем. На Windows проблема актуальна. Возможно необходимо просто указать флаг компилятору? На Win используется clang-cl, на Linux: gcc.


UPD2: Сборка проекта https://github.com/punkochel/hello-project

Log сборки проекта CMake:

PS D:\Users\username\Desktop\hello-project\build> cmake ..
-- Building for: Visual Studio 17 2022
-- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.19045.
-- The C compiler identification is MSVC 19.33.31631.0
-- The CXX compiler identification is MSVC 19.33.31631.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: D:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.33.31629/bin/HostX64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: D:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.33.31629/bin/HostX64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: D:/Users/username/Desktop/hello-project/build
PS D:\Users\username\Desktop\hello-project\build>

Log компоновки проекта:

PS D:\Users\username\Desktop\hello-project\build> cmake --build .
MSBuild version 17.4.1+9a89d02ff for .NET Framework
  Checking Build System
  Building Custom Rule D:/Users/username/Desktop/hello-project/CMakeLists.txt
  hello.cpp
  MessageLib.vcxproj -> D:\Users\username\Desktop\hello-project\build\Debug\MessageLib.dll
  Building Custom Rule D:/Users/username/Desktop/hello-project/CMakeLists.txt
  main.cpp
LINK : fatal error LNK1104: не удается открыть файл "Debug\MessageLib.lib" [D:\Users\username\Desktop\hello-project\buil
d\HelloWorld.vcxproj]
PS D:\Users\username\Desktop\hello-project\build>

Решение проблемы отражено в комментариях к данному вопросу.

Ответы

Ответов пока нет.