[CMake] how to link with a system library ?
Mike Jackson
mike.jackson at bluequartz.net
Sun Sep 21 09:41:00 EDT 2008
On Sep 21, 2008, at 9:28 AM, Steven Samuel Cole wrote:
> Mike Jackson schrieb:
>> include(FindGTK)
>> add_executable (myexec ${sources} )
>> target_link_libraries(myexec ${GTK_LIBRARIES} )
>> Note the order above.
>> Also, cmake variables are ALWAYS used with braces ${Variable} NOT
>> $Variable.
>> Mike
>
> Thanks for that, Mike :-)
>
> The sample code corresponds to what I'm doing, even the order
> happens to be the same. I still keep getting GTK include errors.
> Tried include_directories (... ${GTK_INCLUDE_DIR}) in all orders.
>
> BTW: Why does the order matter ? How do I know the right order ?
>
> When I use hand-coded include paths, I get GTK linker errors.
>
> > If you are having cmake generate makefiles then run make in the
> > following fashion:
> >
> > make VERBOSE=1
> >
> > and carefully inspect the compile line. From that you should be able
> > to deduce why gtk/gtk.h is NOT on the include paths.
>
> True,there is nothing GTK-related in the compile line.
>
> So does FindGTK silently fail to find GTK inc/libs ?
> If so, how can I fix that ?
>>
You need to "add_executable" before you can "target_link_libraries".
The add_executable command adds a "target" called myexec. Then you
"target_link_libraries". Think of the "add_executable" as the compile
step and the "target_link_libraries" as the link step. You have to
compile before you can link. ;-)
Looking at the FindGTK module in CMake 2.6.1 it would seem that it
will silently fail. add the following to your cmake code:
FIND_PACKAGE(GTK REQUIRED)
IF (NOT GTK_FOUND)
MESSAGE (FATAL_ERROR "GTK NOT FOUND")
ENDIF (NOT GTK_FOUND)
then your add_executable and target_link_libraries lines and lets see
what happens
---
Mike Jackson - Principal Software Engineer
www.bluequartz.net
More information about the CMake
mailing list