[CMake] Linking against OS X Frameworks

Michael Wild themiwi at gmail.com
Sat Aug 8 02:47:18 EDT 2009


On 8. Aug, 2009, at 0:33, ML wrote:

> Hi All,
>
> Continuing this conversation
>
>>> Folks, CMake is framework aware.   You don't need to add the -F  
>>> stuff. You can either use a full path to a framework in  
>>> include_directories or
>>> in target_link_libraries.   Find_library will also find frameworks.
>>>
>>> The following will work:
>>>
>>> find_library(CARBON NAMES Carbon)
>>> add_executable(foo foo.cxx)
>>> target_link_libraries(foo ${CARBON})
>
> If I do this, I get my compile errors referencing lack of Carbon  
> Framework like:
>
> In file included from /Volumes/Data/jtsm/Checkout/Universal GUI/ 
> source/thirdparty/OSX/MoreFilesX/MoreFilesX.c:82:
> /Volumes/Data/jtsm/Checkout/Universal GUI/source/thirdparty/OSX/ 
> MoreFilesX/MoreFilesX.h:1494: error: conflicting types for  
> ‘FSVolumeMount’
> /System/Library/Frameworks/CoreServices.framework/Frameworks/ 
> CarbonCore.framework/Headers/Files.h:7323: error: previous  
> declaration of ‘FSVolumeMount’ was here
> /Volumes/Data/jtsm/Checkout/Universal GUI/source/thirdparty/OSX/ 
> MoreFilesX/MoreFilesX.c: In function ‘FSGetVolParms’:
> /Volumes/Data/jtsm/Checkout/Universal GUI/source/thirdparty/OSX/ 
> MoreFilesX/MoreFilesX.c:231: error: ‘HParamBlockRec’ undeclared  
> (first use in this function)
> /Volumes/Data/jtsm/Checkout/Universal GUI/source/thirdparty/OSX/ 
> MoreFilesX/MoreFilesX.c:231: error: (Each undeclared identifier is  
> reported only once
>
> There is definitely something key that I am missing here...what is it?
>
> -Jason
>

This is a compile error, and has nothing to do with linking.

Problem is, you have FSVolumeMount declared in thirdparty/OSX/ 
MoreFilesX/MoreFilesX.c, which, however, is also a function in Carbon.  
So you have simple name clash. The issue you are facing might be that  
FSVolumeMount was introduced in Mac OSX 10.5, and the clash didn't  
happen on 10.4.

Michael


More information about the CMake mailing list