mirror of
https://github.com/fltk/fltk.git
synced 2026-05-23 07:46:09 +08:00
Merge pull request #10 from MatthiasWM/master
Updated macOS build documentation for 1.4
This commit is contained in:
-462
@@ -1,462 +0,0 @@
|
||||
README.OSX.txt - Building FLTK under Apple macOS
|
||||
-------------------------------------------------
|
||||
|
||||
|
||||
|
||||
CONTENTS
|
||||
==========
|
||||
|
||||
1 INTRODUCTION
|
||||
2 HOW TO BUILD FLTK USING GCC
|
||||
2.1 Prerequisites
|
||||
2.2 Downloading and Unpacking
|
||||
2.3 Configuring FLTK
|
||||
2.4 Building FLTK
|
||||
2.5 Testing FLTK
|
||||
2.6 Installing FLTK
|
||||
2.7 Creating new Projects
|
||||
3 HOW TO BUILD FLTK USING XCODE3
|
||||
3.1 Prerequisites
|
||||
3.2 Downloading and Unpacking
|
||||
3.3 Configuring FLTK
|
||||
3.4 Building FLTK
|
||||
3.5 Testing FLTK
|
||||
3.6 Uninstalling previous versions of FLTK
|
||||
3.7 Installing FLTK
|
||||
3.8 Installing Little Helpers
|
||||
3.9 Creating new Projects
|
||||
4 HOW TO BUILD FLTK USING XCODE4
|
||||
4.1 Prerequisites
|
||||
4.2 Downloading and Unpacking
|
||||
4.3 Configuring FLTK
|
||||
4.4 Building FLTK
|
||||
4.5 Testing FLTK
|
||||
4.6 Uninstalling previous versions of FLTK
|
||||
4.7 Installing FLTK
|
||||
5 MAKE AN APPLICATION LAUNCHABLE BY DROPPING FILES ON ITS ICON
|
||||
6 DOCUMENT HISTORY
|
||||
|
||||
|
||||
1 INTRODUCTION
|
||||
=================
|
||||
|
||||
FLTK supports all macOS versions above 10.3 (Panther). See below for how to
|
||||
build FLTK applications that can run on all (old or recent) macOS versions.
|
||||
|
||||
FLTK currently supports the following development environments on the macOS
|
||||
platform:
|
||||
|
||||
- gcc command line tools
|
||||
- Xcode 3.x and higher
|
||||
|
||||
CAUTION: gcc command line built libraries and Xcode created Frameworks should
|
||||
not be mixed!
|
||||
|
||||
|
||||
2 HOW TO BUILD FLTK USING GCC
|
||||
================================
|
||||
|
||||
|
||||
2.1 Prerequisites
|
||||
--------------------
|
||||
|
||||
In order to build FLTK from the command line, you need to install the Xcode
|
||||
developer environment. It can be downloaded from the Apple Store for free.
|
||||
|
||||
After downloading and installing, you need to launch the Terminal. Terminal.app
|
||||
is located in the "Utilities" folder inside the "Applications" folder. I like
|
||||
to keep the Terminal in the Dock.
|
||||
|
||||
|
||||
2.2 Downloading and Unpacking
|
||||
--------------------------------
|
||||
|
||||
Download FLTK from here:
|
||||
|
||||
https://www.fltk.org/software.php
|
||||
|
||||
If you are familiar with Git and like to stay current with your version,
|
||||
you will find the Git access parameters at the bottom of that page.
|
||||
Unpack FLTK into a convenient location. I like to have everything in my
|
||||
dev directory:
|
||||
|
||||
cd
|
||||
mkdir dev
|
||||
cd dev
|
||||
mv ~/Downloads/fltk-1.3.xxxx.tar.gz .
|
||||
tar xvfz fltk-1.3.xxxx.tar.gz
|
||||
cd fltk-1.3.xxxx
|
||||
|
||||
If you got FLTK via Git then you need one extra step: build the
|
||||
configure script. Otherwise skip the following part marked ADVANCED:
|
||||
|
||||
|
||||
2.3 Configuring FLTK
|
||||
-----------------------
|
||||
|
||||
|
||||
Now configure your FLTK installation: stay in your FLTK source-code directory
|
||||
and type
|
||||
|
||||
./configure
|
||||
|
||||
ADVANCED: type "./configure --help" to get a complete list of optional
|
||||
configurations parameters. These should be pretty self-explanatory. Some
|
||||
more details can be found in README.
|
||||
|
||||
To create multi-architecture binaries, start "configure" with these flags:
|
||||
./configure --with-archflags="-arch i386 -arch x86_64"
|
||||
|
||||
To create applications that can run under macOS 10.4 and above, use these flags:
|
||||
./configure CXXFLAGS="-mmacosx-version-min=10.4" LDFLAGS="-mmacosx-version-min=10.4"
|
||||
|
||||
:END_ADVANCED
|
||||
|
||||
The configuration script will check your machine for the required resources
|
||||
which should all have been part of your Xcode installation. Review the
|
||||
Configuration Summary, maybe take some notes.
|
||||
|
||||
|
||||
2.4 Building FLTK
|
||||
--------------------
|
||||
|
||||
Now this is easy. Stay in your FLTK source-code directory and type:
|
||||
|
||||
make
|
||||
|
||||
The entire FLTK toolkit including many test programs will be built for you. No
|
||||
warnings should appear, but "ranlib" may complain about a few modules having no
|
||||
symbols. This is normal and can safely be ignored.
|
||||
|
||||
|
||||
2.5 Testing FLTK
|
||||
-------------------
|
||||
|
||||
After a successful build, you can test FLTK's capabilities:
|
||||
|
||||
test/demo
|
||||
|
||||
|
||||
2.6 Installing FLTK
|
||||
----------------------
|
||||
|
||||
If you did not change any of the configuration settings, FLTK will be installed
|
||||
in "/usr/local/include" and "/usr/local/lib" by typing
|
||||
|
||||
sudo make install
|
||||
|
||||
It is possible to install FLTK without superuser privileges by changing the
|
||||
installation path to a location within the user account by adding the
|
||||
"--prefix=PREFIX" parameter to the "./configure" command.
|
||||
|
||||
|
||||
2.7 Creating new Projects
|
||||
----------------------------
|
||||
|
||||
FLTK provides a neat script named "fltk-config" that can provide all the flags
|
||||
needed to build FLTK applications using the same flags that were used to build
|
||||
the library itself. Architecture flags (e.g., -arch i386) used to build the
|
||||
library, though, are not provided by the fltk-config script. This allows to
|
||||
build universal libraries and to produce applications of any architecture
|
||||
from them. Running "fltk-config" without arguments will print a list
|
||||
of options. The easiest call to compile an FLTK application from a single source
|
||||
file is:
|
||||
|
||||
fltk-config --compile myProgram.cxx
|
||||
|
||||
"fltk-config" and "fluid" will be installed in "/usr/local/bin/" by default. I
|
||||
recommend that you add it to the command search path.
|
||||
|
||||
|
||||
|
||||
3 HOW TO BUILD FLTK USING XCODE3
|
||||
===================================
|
||||
|
||||
|
||||
3.1 Prerequisites
|
||||
--------------------
|
||||
|
||||
In order to build FLTK from within Xcode 3, you need to have the Xcode 3
|
||||
developer environment on your computer. If you don't, go to: 'HOW TO BUILD
|
||||
FLTK USING XCODE4'
|
||||
|
||||
|
||||
3.2 Downloading and Unpacking
|
||||
--------------------------------
|
||||
|
||||
Download FLTK from here:
|
||||
|
||||
https://www.fltk.org/software.php
|
||||
|
||||
If you are familiar with "Git" and like to stay current with your
|
||||
version, you will find the Git access parameters at the bottom of that
|
||||
page. You can use the SCM system that is built into Xcode.
|
||||
|
||||
Unpack FLTK by double-clicking it and copy the new folder into a convenient
|
||||
location. I have set up a "dev" folder in my home folder for all my projects.
|
||||
|
||||
|
||||
3.3 Configuring FLTK
|
||||
-----------------------
|
||||
|
||||
Launch Xcode. Open the project file in
|
||||
|
||||
.../fltk-1.3.xxxx/ide/Xcode4/FLTK.xcodeproj
|
||||
|
||||
Use the "Project" pulldown menu to change "Active Build Configuration" to
|
||||
"Release". Change the "Active Architecture" as desired.
|
||||
|
||||
|
||||
3.4 Building FLTK
|
||||
--------------------
|
||||
|
||||
Use the "Project" pulldown menu to set the "Active Target" to "Demo". Select
|
||||
"Build" from the "Build" menu to create all libraries and test applications.
|
||||
|
||||
By default, the Xcode4 project builds applications that run under macOS 10.5
|
||||
and above. To build applications that also run under older Mac OS versions,
|
||||
select "Edit Project Settings" of the Project menu, then select the Build panel,
|
||||
and modify the "macOS Deployment Target" item.
|
||||
|
||||
All frameworks and apps will be located in "./ide/Xcode4/build/Release/".
|
||||
|
||||
|
||||
3.5 Testing FLTK
|
||||
-------------------
|
||||
|
||||
Select "Build and Run" from the "Build" menu to run the Demo program. Use "Demo"
|
||||
to explore all test programs.
|
||||
|
||||
|
||||
3.6 Uninstalling previous versions of FLTK
|
||||
---------------------------------------------
|
||||
|
||||
Remove FLTK frameworks:
|
||||
|
||||
sudo rm -r /Library/Frameworks/fltk*.framework
|
||||
|
||||
Remove Fluid and possibly other utilities:
|
||||
|
||||
sudo rm -r /Developer/Applications/Utilities/FLTK/
|
||||
|
||||
|
||||
3.7 Installing FLTK
|
||||
----------------------
|
||||
|
||||
When distributing FLTK applications, the FLTK frameworks should be made part of
|
||||
the application package. For development however, it is very convenient to have
|
||||
the Release-mode Frameworks in a standard location.
|
||||
|
||||
For Xcode project template use, all FLTK frameworks should be copied from
|
||||
"./ide/Xcode4/build/Release/" to "/Library/Frameworks/". The FLTK header files
|
||||
for all FLTK frameworks will then be at "/Library/Frameworks/fltk.framework/
|
||||
Headers/". Add this path to the header search path of your projects.
|
||||
|
||||
sudo rm -f -r /Library/Frameworks/fltk*
|
||||
sudo cp -R ide/Xcode4/build/Release/fltk*.framework /Library/Frameworks/
|
||||
|
||||
Many FLTK applications will use Fluid, the FLTK User Interface builder, to
|
||||
generate C++ source code from .fl resource files. Add Fluid to the developer
|
||||
tools:
|
||||
|
||||
sudo mkdir /Developer/Applications/Utilities/FLTK/
|
||||
sudo rm -f -r /Developer/Applications/Utilities/FLTK/fluid.app
|
||||
sudo cp -R ide/Xcode4/build/Release/fluid.app /Developer/Applications/Utilities/FLTK/
|
||||
|
||||
|
||||
3.8 Installing Little Helpers
|
||||
--------------------------------
|
||||
|
||||
|
||||
- Project Templates:
|
||||
|
||||
Project Templates are the quickest way to create a new FLTK application from
|
||||
within Xcode. The included project builds an FLTK based Cocoa application
|
||||
written in C++ with support for the Fluid UI designer, image reading, and
|
||||
OpenGL. Unused FLTK sub-Frameworks can simply be removed from the project.
|
||||
The template assumes that Release versions of the FLTK frameworks are installed
|
||||
in /Library/Frameworks as described above.
|
||||
|
||||
First, we need to create the Template folder:
|
||||
|
||||
sudo mkdir -p /Library/Application\ Support/Developer/Shared/Xcode/Project\ Templates/
|
||||
|
||||
Next, we copy the project template over:
|
||||
|
||||
sudo cp -r ide/Xcode4/Project\ Templates/* /Library/Application\ Support/Developer/Shared/Xcode/Project\ Templates/
|
||||
|
||||
After restarting Xcode, the dialog for "File > New Project..." will offer an
|
||||
FLTK 1.3 user template which is ready to compile.
|
||||
|
||||
|
||||
- Fluid file handling
|
||||
|
||||
This section assumes that a Release version of Fluid is installed in
|
||||
"/Developer/Applications/Utilities/FLTK/" as described above. It will install
|
||||
a new file type which opens Fluid as an editor for files ending in ".fl".
|
||||
|
||||
First, we need to create the spec folder:
|
||||
|
||||
sudo mkdir -p /Library/Application\ Support/Developer/Shared/Xcode/Specifications/
|
||||
|
||||
Next, we copy the Fluid specification over:
|
||||
|
||||
sudo cp ide/Xcode4/fluid.pbfilespec /Library/Application\ Support/Developer/Shared/Xcode/Specifications/
|
||||
|
||||
Open Xcode preferences and select the File Types tab. Find the
|
||||
"sourcecode.fluid" entry in "file > text > sourcecode" and set the external
|
||||
editor to Fluid. When adding ".fl" files, set the File Type in the Info dialog
|
||||
to "sourcecode.fluid" and Xcode will edit your file in Fluid when
|
||||
double-clicking.
|
||||
|
||||
|
||||
- More
|
||||
|
||||
TODO: Language Definition
|
||||
TODO: Build Rules
|
||||
|
||||
|
||||
3.9 Creating new Projects
|
||||
----------------------------
|
||||
|
||||
If the little helpers above were installed, the menu "File > New Project..."
|
||||
will pop up a dialog that offers a User Template named Fluid. Select it and
|
||||
follow the instructions.
|
||||
|
||||
|
||||
|
||||
4 HOW TO BUILD FLTK USING XCODE4
|
||||
===================================
|
||||
|
||||
|
||||
4.1 Prerequisites
|
||||
--------------------
|
||||
|
||||
In order to build FLTK from within Xcode 4, 5, 6, 7, or 8 you need to install
|
||||
the Xcode developer environment via the Apple App Store that comes with
|
||||
Lion and up. If you also want the command line version of gcc, you can use
|
||||
the Download section in the Preferences dialog.
|
||||
|
||||
|
||||
4.2 Downloading and Unpacking
|
||||
--------------------------------
|
||||
|
||||
Download FLTK from here:
|
||||
|
||||
https://www.fltk.org/software.php
|
||||
|
||||
If you are familiar with "Git" and like to stay current with your
|
||||
version, you will find the Git access parameters at the bottom of that
|
||||
page. You can use the SCM system that is built into Xcode.
|
||||
|
||||
Unpack FLTK by double-clicking it and copy the new folder into a convenient
|
||||
location. I have set up a "dev" folder in my home folder for all my projects.
|
||||
|
||||
|
||||
4.3 Configuring FLTK
|
||||
-----------------------
|
||||
|
||||
Launch Xcode. Open the project file in
|
||||
|
||||
.../fltk-1.3.xxxx/ide/Xcode4/FLTK.xcodeproj
|
||||
|
||||
There is nothing else to configure.
|
||||
|
||||
|
||||
4.4 Building FLTK
|
||||
--------------------
|
||||
|
||||
Use the "Scheme" pulldown menu to change the active target to "Demo" and
|
||||
"My Mac 32-bit" or "My Mac 64-bit". Select "Build for" -> "Running"Run" from
|
||||
the "Product" menu to create all libraries and test applications.
|
||||
|
||||
By default, the Xcode4 project builds applications that run under macOS 10.5
|
||||
and above. To build applications that also run under older Mac OS versions,
|
||||
modify the "macOS Deployment Target" item of the FLTK project build settings.
|
||||
|
||||
All frameworks and apps will be located in a private directory. Use
|
||||
"Window"->"Organizer" to find the full path.
|
||||
|
||||
|
||||
4.5 Testing FLTK
|
||||
-------------------
|
||||
|
||||
Select "Run" from the "Product" menu to run the Demo program. Use "Demo"
|
||||
to explore all test programs.
|
||||
|
||||
|
||||
4.6 Uninstalling previous versions of FLTK
|
||||
---------------------------------------------
|
||||
|
||||
Remove FLTK frameworks:
|
||||
|
||||
sudo rm -r /Library/Frameworks/fltk*.framework
|
||||
|
||||
Remove Fluid and possibly other utilities:
|
||||
|
||||
sudo rm -r /Applications/FLTK/
|
||||
|
||||
|
||||
4.7 Installing FLTK
|
||||
----------------------
|
||||
|
||||
When distributing FLTK applications, the FLTK frameworks should be made part of
|
||||
the application package. For development however, it is very convenient to have
|
||||
the Release-mode Frameworks in a standard location.
|
||||
|
||||
For Xcode project template use, all FLTK frameworks should be built using
|
||||
"Build for Archiving" and then copied from
|
||||
"./(Organizer->Derived Data Path)/Release/" to "/Library/Frameworks/".
|
||||
The FLTK header files for all FLTK frameworks will then be at
|
||||
"/Library/Frameworks/fltk.framework/Headers/". Add this path to the header
|
||||
search path of your projects.
|
||||
|
||||
sudo rm -f -r /Library/Frameworks/fltk*
|
||||
sudo cp -R (Organizer->Derived Data Path)/Release/fltk*.framework /Library/Frameworks/
|
||||
|
||||
Many FLTK applications will use Fluid, the FLTK User Interface builder, to
|
||||
generate C++ source code from .fl resource files. Add Fluid to the developer
|
||||
tools:
|
||||
|
||||
sudo mkdir /Applications/FLTK/
|
||||
sudo rm -f -r /Applications/FLTK/fluid.app
|
||||
sudo cp -R (Organizer->Derived Data Path)/Release/fluid.app /Applications/FLTK/
|
||||
|
||||
(TODO: 4.8 Installing Little Helpers)
|
||||
(TODO: 4.9 Creating new Projects)
|
||||
|
||||
|
||||
|
||||
5 MAKE AN APPLICATION LAUNCHABLE BY DROPPING FILES ON ITS ICON
|
||||
=================================================================
|
||||
- Prepare an Info.plist file for your application derived from file
|
||||
test/editor-Info.plist which allows any file to be dropped
|
||||
on the application icon.
|
||||
You can edit this file in Xcode and change
|
||||
Document types/Item 0/CFBundleTypeExtensions/Item 0
|
||||
from the current "*" to the desired file extension. Use several items to
|
||||
declare several extensions.
|
||||
|
||||
- Call fl_open_callback() at the beginning of your main() function that sets
|
||||
what function will be called when a file is dropped on the application icon.
|
||||
|
||||
- In Xcode, set the "Info.plist File" build setting of your target application
|
||||
to the Info.plist file you have prepared.
|
||||
|
||||
- Rebuild your application.
|
||||
|
||||
|
||||
6 DOCUMENT HISTORY
|
||||
=====================
|
||||
|
||||
Oct 29 2010 - matt: removed warnings
|
||||
Oct 24 2010 - matt: restructured entire document and verified instructions
|
||||
Dec 19 2010 - Manolo: corrected typos
|
||||
Dec 29 2010 - Manolo: removed reference to AudioToolbox.framework that's no longer needed
|
||||
Feb 24 2011 - Manolo: architecture flags are not propagated to the fltk-config script.
|
||||
Apr 17 2012 - matt: added Xcode4 documentation
|
||||
Nov 13 2012 - Manolo: added "MAKE AN APPLICATION LAUNCHABLE BY DROPPING FILES ON ITS ICON"
|
||||
Apr 28 2014 - Manolo: how to build programs that run on various Mac OS X versions
|
||||
Mar 18 2015 - Manolo: removed uses of the Xcode3 project
|
||||
Apr 01 2016 - AlbrechtS: corrected typo, formatted most line breaks < 80 columns
|
||||
Dec 04 2018 - AlbrechtS: fix typo (lowercase fluid.app) for case sensitive macOS
|
||||
+516
File diff suppressed because it is too large
Load Diff
@@ -255,9 +255,8 @@ extern "C" {
|
||||
|
||||
static void jpeg_mem_src(j_decompress_ptr cinfo, const unsigned char *data)
|
||||
{
|
||||
my_src_ptr src;
|
||||
cinfo->src = (struct jpeg_source_mgr *)malloc(sizeof(my_source_mgr));
|
||||
src = (my_src_ptr)cinfo->src;
|
||||
my_src_ptr src = (my_source_mgr*)malloc(sizeof(my_source_mgr));
|
||||
cinfo->src = &(src->pub);
|
||||
src->pub.init_source = init_source;
|
||||
src->pub.fill_input_buffer = fill_input_buffer;
|
||||
src->pub.skip_input_data = skip_input_data;
|
||||
|
||||
+1
-1
@@ -176,7 +176,7 @@ int Fl_Menu_Item::insert(
|
||||
if (m->flags&FL_SUBMENU && !compare(item, m->text)) break;
|
||||
|
||||
if (!m->text) { /* create a new menu */
|
||||
int n = (index==-1) ? (int) (m-array) : index;
|
||||
int n = (int)(m-array); /* index is not used if label contains a path */
|
||||
array = array_insert(array, msize, n, item, FL_SUBMENU|flags1);
|
||||
msize++;
|
||||
array = array_insert(array, msize, n+1, 0, 0);
|
||||
|
||||
+16
-18
@@ -97,26 +97,24 @@ void gl_remove_displaylist_fonts()
|
||||
|
||||
for (int j = 0 ; j < FL_FREE_FONT ; ++j)
|
||||
{
|
||||
Fl_Font_Descriptor* past = 0;
|
||||
Fl_Font_Descriptor** s_first = Fl_Gl_Window_Driver::global()->fontnum_to_fontdescriptor(j);
|
||||
Fl_Font_Descriptor* f = *s_first;
|
||||
while (f != 0) {
|
||||
if(f->listbase) {
|
||||
if(f == *s_first) {
|
||||
*s_first = f->next;
|
||||
}
|
||||
else {
|
||||
past->next = f->next;
|
||||
Fl_Font_Descriptor *prevDesc = 0L, *nextDesc = 0L;
|
||||
Fl_Font_Descriptor *&firstDesc = *Fl_Gl_Window_Driver::global()->fontnum_to_fontdescriptor(j);
|
||||
for (Fl_Font_Descriptor *desc = firstDesc; desc; desc = nextDesc)
|
||||
{
|
||||
nextDesc = desc->next;
|
||||
if(desc->listbase) {
|
||||
// remove descriptor from a single-linked list
|
||||
if(desc == firstDesc) {
|
||||
firstDesc = desc->next;
|
||||
} else if (prevDesc) {
|
||||
// prevDesc should not be NULL, but this test will make static analysis shut up
|
||||
prevDesc->next = desc->next;
|
||||
}
|
||||
// It would be nice if this next line was in a destructor somewhere
|
||||
glDeleteLists(f->listbase, Fl_Gl_Window_Driver::global()->genlistsize());
|
||||
Fl_Font_Descriptor* tmp = f;
|
||||
f = f->next;
|
||||
delete tmp;
|
||||
}
|
||||
else {
|
||||
past = f;
|
||||
f = f->next;
|
||||
glDeleteLists(desc->listbase, Fl_Gl_Window_Driver::global()->genlistsize());
|
||||
delete desc;
|
||||
} else {
|
||||
prevDesc = desc;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -771,7 +771,7 @@ int BlockWindow::handle(int event) {
|
||||
b = 0;
|
||||
|
||||
for (j = 0, c = columns_; !count && j < num_columns_; j ++, c ++)
|
||||
for (k = 0, b = c->blocks; !count && k < c->num_blocks; k ++, b ++)
|
||||
for (k = 0, b = c->blocks; k < c->num_blocks; k ++, b ++)
|
||||
if (mx >= c->x && mx < (c->x + BLOCK_SIZE) &&
|
||||
my >= b->y && my < (b->y + BLOCK_SIZE)) {
|
||||
if (b->bomb) count = bomb(b->color);
|
||||
|
||||
Reference in New Issue
Block a user