diff --git a/CMakeLists.txt b/CMakeLists.txt index ac8fee04d1d..55647fa24ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,6 +52,7 @@ if(MINGW) set(CMAKE_CXX_LINK_EXECUTABLE " -o ${CMAKE_GNULD_IMAGE_VERSION} ") + link_directories(${MINGW_LINK_DIRECTORIES}) endif() option(WITH_CCACHE "Build with ccache.") diff --git a/win32_build.sh b/win32_build.sh index 9e88df93f81..d8b5f76f981 100755 --- a/win32_build.sh +++ b/win32_build.sh @@ -96,6 +96,12 @@ dokanLibDir="${depsToolsetDir}/dokany/lib" depsDirs="$lz4Dir;$curlDir;$sslDir;$boostDir;$zlibDir;$backtraceDir;$snappyDir" depsDirs+=";$winLibDir" +# Cmake recommends using CMAKE_PREFIX_PATH instead of link_directories. +# Still, some library dependencies may not include the full path (e.g. Boost +# sets the "-lz" flag through INTERFACE_LINK_LIBRARIES), which is why +# we have to ensure that the linker will be able to locate them. +linkDirs="$zlibDir/lib" + lz4Lib="${lz4Dir}/lib/dll/liblz4-1.dll" lz4Include="${lz4Dir}/lib" curlLib="${curlDir}/lib/libcurl.dll.a" @@ -149,6 +155,7 @@ fi # symbols. Until we fix the dependencies (which are either unspecified # or circular), we'll have to stick to static linking. cmake -D CMAKE_PREFIX_PATH=$depsDirs \ + -D MINGW_LINK_DIRECTORIES="$linkDirs" \ -D CMAKE_TOOLCHAIN_FILE="$MINGW_CMAKE_FILE" \ -D WITH_LIBCEPHSQLITE=OFF \ -D WITH_RDMA=OFF -D WITH_OPENLDAP=OFF \