我使用chw-w64(真正使用MXE项目)从Linux交叉编译C ++(和某些C)项目,使用cmake作为构建系统。我已经意识到我需要提供dll libstdc ++和libstdc以及生成的库和exe文件,或者静态链接到这些库。
我的问题是:
哪个选项更可取,静态链接或提供文件?我个人更喜欢静态链接的想法,因为在我的情况下,最终用户更简单。
如果我愿意(或者创建它们的步骤),我在哪里可以找到所需的dll供应它们。我只能在我的工具链中找到.a版本。
如何指示cmake静态链接库,请记住这只是交叉编译所需要的。作为入门者,请参阅下面MXE提供的工具链文件,这是我目前正在使用的工具。我可能不想修改它,而是修改CMakeLists.txt文件,或者通过我的发布脚本的命令行cmake选项。
工具链文件
set(CMAKE_SYSTEM_NAME Windows)
set(MSYS 1)
set(BUILD_SHARED_LIBS OFF)
set(CMAKE_BUILD_TYPE Release)
set(CMAKE_FIND_ROOT_PATH /opt/mxe/usr/x86_64-w64-mingw32)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_C_COMPILER /opt/mxe/usr/bin/x86_64-w64-mingw32-gcc)
set(CMAKE_CXX_COMPILER /opt/mxe/usr/bin/x86_64-w64-mingw32-g++)
set(CMAKE_Fortran_COMPILER /opt/mxe/usr/bin/x86_64-w64-mingw32-gfortran)
set(CMAKE_RC_COMPILER /opt/mxe/usr/bin/x86_64-w64-mingw32-windres)
set(HDF5_C_COMPILER_EXECUTABLE /opt/mxe/usr/bin/x86_64-w64-mingw32-h5cc)
set(HDF5_CXX_COMPILER_EXECUTABLE /opt/mxe/usr/bin/x86_64-w64-mingw32-h5c++)
set(PKG_CONFIG_EXECUTABLE /opt/mxe/usr/bin/x86_64-w64-mingw32-pkg-config)
set(QT_QMAKE_EXECUTABLE /opt/mxe/usr/x86_64-w64-mingw32/qt/bin/qmake)
set(CMAKE_INSTALL_PREFIX /opt/mxe/usr/x86_64-w64-mingw32 CACHE PATH "Installation Prefix")
set(CMAKE_BUILD_TYPE Release CACHE STRING "Debug|Release|RelWithDebInfo|MinSizeRel")
顺便说一句,我已经尝试过以下cmake调用,但这对二进制大小没有影响,所以我认为它没有用。实际测试这个的提示是受欢迎的,我确实安装了葡萄酒。
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} "-static -static-libgcc -static-libstdc++"" \
-DCMAKE_TOOLCHAIN_FILE=/opt/mxe/usr/x86_64-w64-mingw32/share/cmake/mxe-conf.cmake $WORKING_COPY_DIR/release/xfemm_mingw_win64/cfemm