如何静态链接每个.dll除了cygwin1.dll?


cmake_minimum_required(VERSION 3.5)
project(Photomosaics LANGUAGES CXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static")
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_executable(Photomosaics main.cpp)
add_definitions( -DMAGICKCORE_QUANTUM_DEPTH=16 )
add_definitions( -DMAGICKCORE_HDRI_ENABLE=0 )
find_package(ImageMagick COMPONENTS Magick++ MagickCore)
include_directories(${ImageMagick_INCLUDE_DIRS})
target_link_libraries(Photomosaics ${ImageMagick_LIBRARIES})

我一直在尝试生产一个可执行文件,只需要cygwin1.dll与cygwin一起运行,但它报告它缺少cygautotrace-3.dllcygbz2-1.dllcygcario-2.dll和许多其他的。

程序在cygwin的bin目录下运行时不会按预期运行。但我希望它只需要cygwin1.dll运行,并将所有其他.dll文件烤到程序中。我做错了什么?

这不是一个真正正确的修复,但我刚刚开始使用eclipse并手动定义了我需要的库。然后使用IDE中的选项来静态链接除cygwin1.dll之外的所有内容。