[CMake] My dammed problem with OSX and Qt

Bill Hoffman bill.hoffman at kitware.com
Wed Jan 16 13:25:59 EST 2008


Leopold Palomo-Avellaneda wrote:
> A Dimecres 16 Gener 2008, Bill Hoffman va escriure:
>> Leopold Palomo-Avellaneda wrote:

> Linking CXX shared library libpluginregistrodeiva.dylib
> Undefined symbols:
>   "aplinteligentesview::aplinteligentesview(Empresa*, QWidget*)", referenced 
> from:
>       linprevcobro::creaPago()      in linprevcobro.o
>   "aplinteligentesview::setfechaasiento(QString)", referenced from:
>       linprevcobro::creaPago()      in linprevcobro.o
>   "regivaprintview::regivaprintview(Empresa*, QWidget*)", referenced from:
>       ListRegistroIvaView::boton_print()       in listregistroivaview.o


OK, so all these symbols are from your stuff.  I think I know the 
problem. Linux allows for shared libraries to have undefined symbols, 
and the mac does not.  You need to add some 
target_link_libraries(libpluginregistrodeiva ...)

Stuff into your cmake file.

My guess is that if you went on to a linux system, and did nm on the .so 
, you would find these symbols are also undefined.  I think there is a 
flag like -undefined suppress or something that you can pass to the mac 
linker to make it work more like linux.  However, if you ever want to go 
to windows you will have to figure this out as there is no such flag on 
Windows.

-Bill


More information about the CMake mailing list