On 12-Dec-15 03:46, Bartosz Kosiorek wrote:
Hi
To enable iOS build, I'm using following settings in CMakeLists.txt:
set(APPLE_PLATFORM "iphonesimulator")
I think this one not needed. Can't find any place where it parsed.
set(CMAKE_OSX_SYSROOT
"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk")
Can be set to:
set(CMAKE_OSX_SYSROOT "iphoneos")
in this case will support both simulator and device
set(CMAKE_C_FLAGS "-isysroot ${CMAKE_OSX_SYSROOT} -mios-version-min=7.0")
set(CMAKE_CXX_FLAGS "-isysroot ${CMAKE_OSX_SYSROOT}
-mios-version-min=7.0")
You can set minimum version by
CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET variable.
In case of `CMAKE_OSX_SYSROOT` variable is set to `iphoneos` option
`-isysroot` is redundant.
Do you think it should be documented?
Where is the good place to do so?
Maybe somewhere here:
https://cmake.org/cmake/help/v3.4/variable/CMAKE_OSX_SYSROOT.html
What do you think?
------------------------------------------------------------------------
*From:* clin...@elemtech.com <clin...@elemtech.com>
*Sent:* Friday, December 11, 2015 8:21 PM
*To:* Bartosz Kosiorek
*Cc:* Bartosz Kosiorek; cmake-developers; Gregor Jasny
*Subject:* Re: [cmake-developers] Create subdirectories in Resource
directory for Frameworks and Application bundle.
----- On Dec 11, 2015, at 11:44 AM, Bartosz Kosiorek
<gan...@poczta.onet.pl> wrote:
Hi
Because there is difference between OS X and iOS Bundles directory
structure (see: Apple specification
https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html),
in trunk (In CMake 3.5) RESOURCE property create corresponding
directory structure.
I have already fix that with:
https://public.kitware.com/Bug/view.php?id=15848
Ok. I hadn't been following all your work.
Also, I didn't see a toggle in the CMake code you sent to choose an
iOS bundle instead of OS X bundles. How is that toggled?
So RESOURCE gives you a level of abstraction:
For OSX:
it will create "Resource" directory
For iOS it will create "flat" directory structure.
In your example "Resource" directory will be created in both cases
(for OSX and iOS).
Which is wrong:
For OSX: it should create "Resource" directory
For iOS it will create "flat" directory structure.
I could provide patch to fix that issue, if you agree with that.
What do you think about that?
Do you think the same should be applied to "Headers"?
I think the abstraction seems reasonable, as well as what you are
proposing. However, I'm not an Apple guru.
I wonder if there are other Apple experts that can weigh in this if
better feedback is needed.
Clint
Best Regards
Bartosz
2015-12-11 19:06 GMT+01:00 Clinton Stimpson <clin...@elemtech.com
<mailto:clin...@elemtech.com>>:
On Friday, December 11, 2015 05:01:41 PM Bartosz Kosiorek wrote:
> Thanks Clint
>
> Unfortunately MACOSX_PACKAGE_LOCATION is not working
correctly with RESOURCE
> property. For every resource which is marked as RESOURCE,
will be placed in
> root "Resources" directory.
>
> The CMake code below create following directory structure
for OS X:
>
> ── mul.framework
> ├── Headers -> Versions/Current/Headers
> ├── Resources -> Versions/Current/Resources
> ├── Versions
> │ ├── A
> │ │ ├── Headers
> │ │ │ └── mul.h
> │ │ ├── Modules
> │ │ │ └── module.modulemap
> │ │ ├── Resources
> │ │ │ ├── Info.plist
> │ │ │ ├── mulres.txt
> │ │ │ ├── pl.txt
> │ │ │ └── resourcefile.txt
> │ │ ├── lang
> │ │ │ └── en.txt
> │ │ └── mul
> │ └── Current -> A
> └── mul -> Versions/Current/mul
>
>
> As you can see eveything which is marked as "RESOURCE" will
be placed in
> Versions/A/ directory My expectation will be that
lang/pl.txt and
> lang/en.txt should be in Resources/lang/ directory. Here is
complete
> directory structure:
>
> ── mul.framework
> ├── Headers -> Versions/Current/Headers
> ├── Resources -> Versions/Current/Resources
> ├── Versions
> │ ├── A
> │ │ ├── Headers
> │ │ │ └── mul.h
> │ │ ├── Modules
> │ │ │ └── module.modulemap
> │ │ ├── Resources
> │ │ │ ├── Info.plist
> │ │ │ ├── mulres.txt
> │ │ │ ├── lang
> │ │ │ │ └── pl.txt
> │ │ │ │ └── en.txt
> │ │ │ └── resourcefile.txt
> │ │ ├── lang
> │ │ │ └── en.txt
> │ │ └── mul
> │ └── Current -> A
> └── mul -> Versions/Current/mul
>
>
> What do you think about that?
>
> Here is the source code:
>
> set_property(SOURCE module.modulemap
> PROPERTY MACOSX_PACKAGE_LOCATION "Modules")
>
> set_property(
> SOURCE lang/en.txt lang/pl.txt
> PROPERTY MACOSX_PACKAGE_LOCATION "lang")
>
> set(RESLIST
> mulres.txt
> lang/pl.txt
> resourcefile.txt
> )
>
> add_library(mul SHARED
> mul.c
> mul.h
> module.modulemap
> lang/pl.txt
> lang/en.txt
> resourcefile.txt
> mulres.txt)
>
> # Create an iOS Framework bundle
> set_target_properties(mul PROPERTIES
> FRAMEWORK TRUE
> MACOSX_FRAMEWORK_IDENTIFIER org.cmake.mul
> MACOSX_FRAMEWORK_SHORT_VERSION_STRING 42
> MACOSX_FRAMEWORK_BUNDLE_VERSION 3.2.10
> XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer"
> PUBLIC_HEADER mul.h
> RESOURCE "${RESLIST}"
> )
Here is a CMakeLists.txt that will give you the desired layout.
I also see that MACOSX_PACKAGE_LOCATION doesn't work with
RESOURCE.
set_property(SOURCE module.modulemap
PROPERTY MACOSX_PACKAGE_LOCATION "Modules")
set_property(
SOURCE lang/pl.txt lang/en.txt
PROPERTY MACOSX_PACKAGE_LOCATION "Resources/lang")
set(RESLIST
mulres.txt
resourcefile.txt
)
add_library(mul SHARED
mul.c
mul.h
module.modulemap
lang/pl.txt
lang/en.txt
resourcefile.txt
mulres.txt)
# Create an iOS Framework bundle
set_target_properties(mul PROPERTIES
FRAMEWORK TRUE
MACOSX_FRAMEWORK_IDENTIFIER org.cmake.mul
MACOSX_FRAMEWORK_SHORT_VERSION_STRING 42
MACOSX_FRAMEWORK_BUNDLE_VERSION 3.2.10
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer"
PUBLIC_HEADER mul.h
RESOURCE "${RESLIST}"
)
Now I'm wondering what does the RESOURCE target property do that
MACOSX_PACKAGE_LOCATION doesn't already support?
Clint
--
Powered by www.kitware.com <http://www.kitware.com>
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
<http://www.cmake.org/Wiki/CMake_FAQ>
Kitware offers various services to support the CMake
community. For more information on each offering, please visit:
CMake Support: http://cmake.org/cmake/help/support.html
<http://cmake.org/cmake/help/support.html>
CMake Consulting: http://cmake.org/cmake/help/consulting.html
<http://cmake.org/cmake/help/consulting.html>
CMake Training Courses:
http://cmake.org/cmake/help/training.html
<http://cmake.org/cmake/help/training.html>
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers
--
Powered by www.kitware.com
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Kitware offers various services to support the CMake community. For more
information on each offering, please visit:
CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers