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

Reply via email to