mirror of
https://github.com/wxWidgets/wxWidgets.git
synced 2026-09-22 14:20:35 +08:00
Expand macOS build instructions
Explain how to make a universal binary 2 from CMake. Explain how to make an icns (application icon) file. Minor rewording, add some commas. Closes #24672.
This commit is contained in:
committed by
Vadim Zeitlin
parent
fed7de961e
commit
a66a3d4090
@@ -73,13 +73,23 @@ wxBUILD_COMPATIBILITY | STRING | 3.2 | Enable API compatibility with 3.0
|
||||
wxBUILD_PRECOMP | BOOL | ON | Use precompiled headers
|
||||
wxBUILD_MONOLITHIC | BOOL | OFF | Build a single library
|
||||
|
||||
Note that on macOS, the option `CMAKE_OSX_ARCHITECTURES` is used to specify which architecture(s) to build.
|
||||
For example, the following will build a "universal binary 2" (i.e., ARM64 and Intel x86_64) library.
|
||||
~~~{.sh}
|
||||
cmake ~/Downloads/wxWidgets_3.1 \
|
||||
-DCMAKE_INSTALL_PREFIX=~/wx_install \
|
||||
-DwxBUILD_SHARED=OFF
|
||||
-D"CMAKE_OSX_ARCHITECTURES:STRING=arm64;x86_64"
|
||||
cmake --build . --target install
|
||||
~~~
|
||||
|
||||
A complete list of options and advanced options can be found when using the
|
||||
CMake GUI.
|
||||
|
||||
Recommendations {#cmake_recommendations}
|
||||
=======================
|
||||
While CMake in wxWidgets aims to support most generators available
|
||||
in CMake the following generators are recommended:
|
||||
in CMake, the following generators are recommended:
|
||||
* Windows: Visual Studio (any supported version)
|
||||
* macOS: Xcode
|
||||
* Linux: Ninja or Makefiles
|
||||
@@ -88,7 +98,7 @@ CMake 3.10 or newer is recommended. The minimum tested version is 3.5.
|
||||
|
||||
Using CMake with your applications {#cmake_apps}
|
||||
==================================
|
||||
If you are using CMake with your own application there are various ways to use
|
||||
If you are using CMake with your own application, there are various ways to use
|
||||
wxWidgets:
|
||||
* Using an installed, binary or compiled version of wxWidgets
|
||||
using `find_package()`
|
||||
|
||||
+46
-23
@@ -7,12 +7,12 @@ wxWidgets can be compiled using Apple's Cocoa toolkit.
|
||||
|
||||
Most OS X developers should start by downloading and installing Xcode
|
||||
from the App Store. It is a free IDE from Apple that provides
|
||||
all of the tools you need for working with wxWidgets.
|
||||
all the tools you need for working with wxWidgets.
|
||||
|
||||
After Xcode is installed, download `wxWidgets-{version}.tar.bz2` and then
|
||||
double-click on it to unpack it to create a wxWidgets directory.
|
||||
|
||||
Next use Terminal (under Applications, Utilities, Terminal) to access a command
|
||||
Next, use Terminal (under Applications, Utilities, Terminal) to access a command
|
||||
prompt. Use `cd` to change directories to your wxWidgets directory and execute
|
||||
the following sets of commands from the wxWidgets directory.
|
||||
|
||||
@@ -21,7 +21,7 @@ the following sets of commands from the wxWidgets directory.
|
||||
../configure --enable-debug
|
||||
make
|
||||
|
||||
It is recommended to use `-jN` option with the last command, where `N` is a
|
||||
It is recommended to use the `-jN` option with the last command, where `N` is a
|
||||
number of the processors in your system (which can be checked using `sysctl -n
|
||||
hw.ncpu` command if you are not sure), as this will dramatically speed up the
|
||||
build on modern systems. So in practice you should use a command like this:
|
||||
@@ -31,7 +31,7 @@ build on modern systems. So in practice you should use a command like this:
|
||||
(but don't use it unless you actually have 8 CPUs and enough memory for that
|
||||
many parallel compiler invocations).
|
||||
|
||||
You may also prefer to add `-s` option to avoid normal output from make and/or
|
||||
You may also prefer to add the `-s` option to avoid normal output from make and/or
|
||||
redirect it you to a log file for further inspection.
|
||||
|
||||
You should build at least the smallest possible wxWidgets sample to verify that
|
||||
@@ -47,6 +47,8 @@ If you'd like to, you can also build all the other samples and demos
|
||||
cd samples; make;cd ..
|
||||
cd demos; make;cd ..
|
||||
|
||||
If you use CMake, please see @ref overview_cmake for
|
||||
building wxWidgets using it.
|
||||
|
||||
Advanced topics {#osx_advanced}
|
||||
===============
|
||||
@@ -54,20 +56,41 @@ Advanced topics {#osx_advanced}
|
||||
Building library for distribution
|
||||
---------------------------------
|
||||
|
||||
When building library for the distribution with your application, you shouldn't
|
||||
use `--enable-debug` option above but you may want to use `--disable-sys-libs`
|
||||
option to ensure that it has no dependencies on the other libraries available
|
||||
on the current system as they might not be present on all systems where the
|
||||
application is used.
|
||||
When building the library for the distribution with your application, you shouldn't
|
||||
use the `--enable-debug` option above. You may, however, want to use the `--disable-sys-libs`
|
||||
option to ensure that it has no dependencies on your build system's other libraries
|
||||
that may not be present on all systems where the application is used.
|
||||
|
||||
It is also often desirable to build the final version of the application as
|
||||
"universal binary", i.e. a combination of binaries for several different
|
||||
architectures. In this case, you should build wxWidgets as universal binary
|
||||
too, using `--enable-universal_binary` option. By default, this option enables
|
||||
building for the usually wanted set of architectures (currently ARM and Intel)
|
||||
It is also often desirable to build the final version of the application as a
|
||||
"universal binary" (i.e., a combination of binaries for several different
|
||||
architectures). In this case, you should build wxWidgets as a universal binary
|
||||
too, using the `--enable-universal_binary` option. By default, this option enables
|
||||
building for the usually wanted set of architectures (currently ARM and Intel),
|
||||
but you may override this by listing the architectures you want to use
|
||||
explicitly, separating them with commas.
|
||||
|
||||
Creating an application icon (icns)
|
||||
-----------------------------------
|
||||
|
||||
Assuming that your application icon is a PNG file named "app-logo.png" that
|
||||
has a 1024x1024 resolution, run the following from Terminal:
|
||||
|
||||
mkdir app-logo.iconset
|
||||
sips -z 16 16 app-logo.png --out app-logo.iconset/icon_16x16.png
|
||||
sips -z 32 32 app-logo.png --out app-logo.iconset/icon_16x16@2x.png
|
||||
sips -z 32 32 app-logo.png --out app-logo.iconset/icon_32x32.png
|
||||
sips -z 64 64 app-logo.png --out app-logo.iconset/icon_32x32@2x.png
|
||||
sips -z 128 128 app-logo.png --out app-logo.iconset/icon_128x128.png
|
||||
sips -z 256 256 app-logo.png --out app-logo.iconset/icon_128x128@2x.png
|
||||
sips -z 256 256 app-logo.png --out app-logo.iconset/icon_256x256.png
|
||||
sips -z 512 512 app-logo.png --out app-logo.iconset/icon_256x256@2x.png
|
||||
sips -z 512 512 app-logo.png --out app-logo.iconset/icon_512x512.png
|
||||
cp app-logo.png app-logo.iconset/icon_512x512@2x.png
|
||||
iconutil -c icns app-logo.iconset
|
||||
rm -R app-logo.iconset
|
||||
|
||||
This will produce a file named "app-logo.icns" that can be included in your
|
||||
Info.plist file to be used as the application icon.
|
||||
|
||||
Installing library {#osx_install}
|
||||
------------------
|
||||
@@ -75,12 +98,12 @@ Installing library {#osx_install}
|
||||
It is rarely desirable to install non-Apple software into system directories,
|
||||
so the recommended way of using wxWidgets under macOS is to skip the `make
|
||||
install` step and simply use the full path to `wx-config` under the build
|
||||
directory when building application using the library.
|
||||
directory when building an application using the library.
|
||||
|
||||
If you want to install the library into the system directories you'll need
|
||||
to do this as root. The accepted way of running commands as root is to
|
||||
use the built-in sudo mechanism. First of all, you must be using an
|
||||
account marked as a "Computer Administrator". Then
|
||||
If you want to install the library into the system directories, you'll need
|
||||
to do this as root. The accepted way of running commands as root is to
|
||||
use the built-in `sudo` mechanism. First of all, you must be using an
|
||||
account marked as a "Computer Administrator". Then
|
||||
|
||||
sudo make install
|
||||
type \<YOUR OWN PASSWORD\>
|
||||
@@ -88,8 +111,8 @@ account marked as a "Computer Administrator". Then
|
||||
Distributing applications using wxWidgets
|
||||
-----------------------------------------
|
||||
|
||||
If you build wxWidgets as static libraries, i.e. pass `--disable-shared` option
|
||||
to configure, you don't need to do anything special to distribute them, as all
|
||||
If you build wxWidgets as static libraries (i.e., pass `--disable-shared` option
|
||||
to configure), you don't need to do anything special to distribute them, as all
|
||||
the required code is linked into your application itself. When using shared
|
||||
libraries (which is the default), you need to copy the libraries into your
|
||||
application bundle and change their paths using `install_name_tool` so that
|
||||
@@ -102,8 +125,8 @@ You can use the project in build/osx/wxcocoa.xcodeproj to build the Cocoa
|
||||
version of wxWidgets (wxOSX/Cocoa). There are also sample
|
||||
projects supplied with the minimal sample.
|
||||
|
||||
Notice that the command line build above builds not just the library itself but
|
||||
also wxrc tool which doesn't have its own Xcode project. If you need this tool,
|
||||
Notice that the command lines above build not just the library itself but
|
||||
also the wxrc tool which doesn't have its own Xcode project. If you need this tool,
|
||||
the simplest possibility is to build it from the command line after installing
|
||||
the libraries using commands like this:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user