20,741
edits
m (add placeholder image as "logo" for now (screen shot showing mxe/shared build)) |
m (→Contributing: ccache & cmake) |
||
| Line 439: | Line 439: | ||
* Building mxe: http://mxe.cc/#usage | * Building mxe: http://mxe.cc/#usage | ||
* Creating packages: http://mxe.cc/#creating-packages | * Creating packages: http://mxe.cc/#creating-packages | ||
Before building mxe, you should consider installing ccache first, which also requires adapting the pkgconf.mk file in mxe: | |||
<syntaxhighlight lang="bash"> | |||
sudo apt-get install ccache | |||
</syntaxhighlight> | |||
Next, open src/pkgconf.mk and add the ccache executable in front of the compiler executable (this will only affect mxe-conf.cmake, so it will only benefit cmake-based projects in its current form). | |||
<syntaxhighlight lang="diff"> | |||
diff --git a/src/pkgconf.mk b/src/pkgconf.mk | |||
index 9a23619..c1e30e4 100644 | |||
--- a/src/pkgconf.mk | |||
+++ b/src/pkgconf.mk | |||
@@ -52,9 +52,9 @@ define $(PKG)_BUILD_COMMON | |||
echo 'set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)'; \ | |||
echo 'set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)'; \ | |||
echo 'set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)'; \ | |||
- echo 'set(CMAKE_C_COMPILER $(PREFIX)/bin/$(TARGET)-gcc)'; \ | |||
- echo 'set(CMAKE_CXX_COMPILER $(PREFIX)/bin/$(TARGET)-g++)'; \ | |||
- echo 'set(CMAKE_Fortran_COMPILER $(PREFIX)/bin/$(TARGET)-gfortran)'; \ | |||
+ echo 'set(CMAKE_C_COMPILER ccache $(PREFIX)/bin/$(TARGET)-gcc)'; \ | |||
+ echo 'set(CMAKE_CXX_COMPILER ccache $(PREFIX)/bin/$(TARGET)-g++)'; \ | |||
+ echo 'set(CMAKE_Fortran_COMPILER ccache $(PREFIX)/bin/$(TARGET)-gfortran)'; \ | |||
echo 'set(CMAKE_RC_COMPILER $(PREFIX)/bin/$(TARGET)-windres)'; \ | |||
echo 'set(CMAKE_MODULE_PATH "$(PWD)/src/cmake" $${CMAKE_MODULE_PATH}) # For mxe FindPackage scripts'; \ | |||
echo 'set(CMAKE_INSTALL_PREFIX $(PREFIX)/$(TARGET) CACHE PATH "Installation Prefix")'; \ | |||
</syntaxhighlight> | |||
To see if you were successful adding ccache, check the generated toolchain file: | |||
<syntaxhighlight lang="bash"> | |||
cat usr/x86_64-w64-mingw32.shared/share/cmake/mxe-conf.cmake | |||
</syntaxhighlight> | |||
it should look like this: | |||
<syntaxhighlight lang="cmake"> | |||
set(CMAKE_SYSTEM_NAME Windows) | |||
set(MSYS 1) | |||
set(BUILD_SHARED_LIBS ON) | |||
set(LIBTYPE SHARED) | |||
set(CMAKE_BUILD_TYPE Release) | |||
set(CMAKE_FIND_ROOT_PATH /home/hooray/mxe/usr/x86_64-w64-mingw32.shared) | |||
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 ccache /home/hooray/mxe/usr/bin/x86_64-w64-mingw32.shared-gcc) | |||
set(CMAKE_CXX_COMPILER ccache /home/hooray/mxe/usr/bin/x86_64-w64-mingw32.shared-g++) | |||
set(CMAKE_Fortran_COMPILER ccache /home/hooray/mxe/usr/bin/x86_64-w64-mingw32.shared-gfortran) | |||
set(CMAKE_RC_COMPILER /home/hooray/mxe/usr/bin/x86_64-w64-mingw32.shared-windres) | |||
set(CMAKE_MODULE_PATH "/home/hooray/mxe/src/cmake" ${CMAKE_MODULE_PATH}) # For mxe FindPackage scripts | |||
set(CMAKE_INSTALL_PREFIX /home/hooray/mxe/usr/x86_64-w64-mingw32.shared CACHE PATH "Installation Prefix") | |||
set(CMAKE_BUILD_TYPE Release CACHE STRING "Debug|Release|RelWithDebInfo|MinSizeRel") | |||
set(CMAKE_CROSS_COMPILING ON) # Workaround for http://www.cmake.org/Bug/view.php?id=14075 | |||
set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> -O coff <FLAGS> <DEFINES> -o <OBJECT> <SOURCE>") # Workaround for buggy windres rules | |||
set(PKG_CONFIG_EXECUTABLE /home/hooray/mxe/usr/bin/x86_64-w64-mingw32.shared-pkg-config) | |||
</syntaxhighlight> | |||