[CMake] OS X framework headers with capital letters

David Cole DLRdave at aol.com
Tue Jul 21 16:30:45 EDT 2015


Try putting ${FOO_HEADER_FILES} in the add_library call, too.

I reproduced this by adding a file, with **ANY** name, to the
PUBLIC_HEADER list of the
[CMake/Tests/Framework/CMakeLists.txt](https://github.com/Kitware/CMake/blob/master/Tests/Framework/CMakeLists.txt)
file... but NOT adding it to the list of sources given to add_library.

It would appear from this experiment that the header files for a
framework must be listed as sources of the library **and** added to
the PUBLIC_HEADER target property.

(I am guessing that you have the other header files that are working
already in your FOO_SOURCE_FILES variable. Either that, or I'm missing
something still...)


HTH,
David C.



On Tue, Jul 21, 2015 at 1:39 PM, Steven Wilson
<steven.wesley.wilson at gmail.com> wrote:
> I am saying the file does not exist in the either installed framework or in
> the framework in the build directory.   CMake is not moving the header files
> that start with a capital letter into the framework headers directory.   Now
> I did double check and it *is* moving the .hpp header that matches the name
> of the framework (Foo.hpp in the example case), but it is not copying Foo.h.
> In addition I tried adding two more arbitrary headers called AnotherHeader.h
> and AnotherHeader.hpp and neither of those get included in the framework
> either.
>
> The example I have posted is just an example.  My actual source files do not
> share names where case sensitivity is a problem.   The file names in the
> real project do not collide in any form.   I am running on a a Mac with the
> HFS+ system without case sensitivity.
>
>
>
> On Tue, Jul 21, 2015 at 12:51 PM, David Cole <DLRdave at aol.com> wrote:
>>
>> Are you saying the file does not exist in the installed framework, or
>> that you do not see "copying Foo.h" in the install output ...? This
>> seems very unlikely. The header files are supposed to be in the
>> framework in the build tree, and the built framework in its entirety
>> is supposed to be recursively copied at install time ...
>>
>> Are you running on a Mac volume with a case sensitive file system or not?
>>
>> Are the source header files in question named with the case you've
>> listed in the CMakeLists file?
>>
>> Does this reproduce if you add another header file named
>> "AnotherHeader.h" and add it into the mix, say listing it first in the
>> list of header files?
>>
>>
>>
>>
>>
>> On Tue, Jul 21, 2015 at 12:15 PM, Steven Wilson
>> <steven.wesley.wilson at gmail.com> wrote:
>> > Not to be picky, but the issue of case sensitivity ignores the original
>> > question.
>> >
>> > If it helps someone think about the issue better, change:
>> >
>> > set(FOO_HEADER_FILES "foo.h;bar.h;bat.h;Foo.h;Foo.hpp")
>> >
>> > to
>> >
>> > set(FOO_HEADER_FILES "bar.h;bat.h;Foo.h;Foo.hpp")
>> >
>> >
>> > Thanks,
>> >
>> > Steve
>> >
>> > On Tue, Jul 21, 2015 at 10:59 AM, Michael Jackson
>> > <mike.jackson at bluequartz.net> wrote:
>> >>
>> >> to be very precise,
>> >>     OS X is a "Case Preserving but NOT Case sensitive" be default. OS X
>> >> can be made to be case sensitive but no one actually recommends it.
>> >>
>> >> this means that on OS X foo.h and Foo.h resolve to be the same file,
>> >> where
>> >> as on Linux they would be 2 different files. You would have the same
>> >> issues
>> >> on Windows.
>> >>
>> >> Mike Jackson
>> >>
>> >>
>> >> On Jul 21, 2015, at 10:35 AM, Dan Kegel <dank at kegel.com> wrote:
>> >>
>> >> It can't installiert both foo.h and Foo.h in the mac, better correct
>> >> your
>> >> example.
>> >>
>> >> Am 21.07.2015 5:19 vorm. schrieb "Steven Wilson"
>> >> <steven.wesley.wilson at gmail.com>:
>> >>>
>> >>> I've noticed that CMake 3.3.0-rc3 will not install a header file in a
>> >>> Mac
>> >>> OS X framework if the header file starts with a capital letter (either
>> >>> that
>> >>> or has the same name as the framework).
>> >>>
>> >>> For example if I have the following:
>> >>>
>> >>>
>> >>> set(FOO_HEADER_FILES "foo.h;bar.h;bat.h;Foo.h;Foo.hpp")
>> >>>
>> >>> add_library(Foo SHARED ${FOO_SOURCE_FILES})
>> >>>
>> >>> set_target_properties(Foo PROPERTIES
>> >>>     FRAMEWORK ON
>> >>>     OUTPUT_NAME Foo
>> >>>     PUBLIC_HEADER "${FOO_HEADER_FILES}"
>> >>> )
>> >>>
>> >>> install(TARGETS Foo
>> >>>   FRAMEWORK DESTINATION "frameworks")
>> >>>
>> >>>
>> >>> Then when running 'make install' or the install target from Xcode, the
>> >>> installation step silently does not install Foo.h or Foo.hpp.
>> >>>
>> >>> This behavior seems arbitrary, wrong, and completely annoying.
>> >>>
>> >>> Comments?
>> >>>
>> >>> --
>> >>>
>> >>> 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
>> >>
>> >> --
>> >>
>> >> 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
>> >>
>> >>
>> >
>> >
>> > --
>> >
>> > 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
>
>


More information about the CMake mailing list