With the FindGSL.cmake copy to the CMake module dir, Here is my CMakeLists.txt (with TARGET_LINK_LIBRARIES) <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="Generator" content="Kate, the KDE Advanced Text Editor">
<pre><b>PROJECT</b>(test1)
<b>FIND_PACKAGE</b>(GSL)<span style="color: rgb(128, 128, 128);"></span>
<b>ADD_DEFINITIONS</b>(-Wall -O2)
<span style="color: rgb(128, 128, 128);"><i>#list all source files here</i></span>
<b>ADD_EXECUTABLE</b>(test1 main.cpp)<span style="color: rgb(128, 128, 128);"></span>
<b>TARGET_LINK_LIBRARIES</b>(test1 gsl_sf_bessel_j0)
</pre>but still got the error<br>
<br>
Linking CXX executable test1<br>
/usr/local/bin/cmake -E remove -f test1<br>
c++ -fPIC "CMakeFiles/test1.dir/main.o" -o test1 -rdynamic -lgsl_sf_bessel_j0<br>
/usr/bin/ld: cannot find -lgsl_sf_bessel_j0<br>
collect2: ld returned 1 exit status<br>
<br>
for the gsl sample program<br>
<pre class="example">#include <stdio.h><br>#include <gsl/gsl_sf_bessel.h><br><br>int<br>main (void)<br>{<br> double x = 5.0;<br> double y = gsl_sf_bessel_J0 (x);<br> printf ("J0(%g) = %.18e\n", x, y);
<br> return 0;<br>}<br><br>What should I do to make it work? I am using linux so it should work somehow. Many thanks.<br><br>zl2k<br></pre>
<br>
<br><br><div><span class="gmail_quote">On 3/13/06, <b class="gmail_sendername">Jan Woetzel</b> <<a href="mailto:jw@woetzelweb.de">jw@woetzelweb.de</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<a href="mailto:kdsfinger@gmail.com">kdsfinger@gmail.com</a> wrote:<br><br>> I am trying to use the gnu gsl package in vtk. The gsl is make<br>> installed by gnu, not cmake. How can I use the library in my vtk<br>> project? I put something like
<br>> FIND_PACKAGE(GSL)<br><br>Does a "FindGSL.cmake" script exist and does cmake find it?<br>See the cmake FIND_PACKAGE help.<br><br>As far as I know CMake does not come with a "standard" find script for
<br>GSL, thus you have to write one yourself .<br>The CMake "Modules" directory contains examples.<br><br>We already created our own simple GSL find, see teh attached file.<br>It is simply based on "gsl-config", actually and works only on Linux.
<br><br>Jan.<br><br>--<br><br> Dipl.-Ing. Jan Woetzel<br>--------------------------------------------------<br> Uni Kiel<br> Institut f. Informatik und Praktische Mathematik<br> Hermann-Rodewaldstr. 3 [Raum 310]<br> 24098 Kiel/Germany
<br>--------------------------------------------------<br> Tel +49-431-880-4477<br> Fax +49-431-880-4054<br> Privat +49-431-802872<br> Mob. +49-179-2937346<br>--------------------------------------------------
<br> Url <a href="http://www.mip.informatik.uni-kiel.de/~jw">www.mip.informatik.uni-kiel.de/~jw</a><br> Email <a href="mailto:jw@mip.informatik.uni-kiel.de">jw@mip.informatik.uni-kiel.de</a><br> Privat <a href="mailto:jw@WoetzelWeb.de">
jw@WoetzelWeb.de</a><br><br><br><br>##<br>## Try to find gnu scientific library GSL<br>## (see <a href="http://www.gnu.org/software/gsl/">http://www.gnu.org/software/gsl/</a>)<br>## Once run this will define:<br>##<br>## GSL_FOUND = system has GSL lib
<br>##<br>## GSL_LIBRARIES = full path to the libraries<br>## on Unix/Linux with additional linker flags from "gsl-config --libs"<br>##<br>## CMAKE_GSL_CXX_FLAGS = Unix compiler flags for GSL, essentially "`gsl-config --cxxflags`"
<br>##<br>## GSL_INCLUDE_DIR = where to find headers<br>##<br>## GSL_LINK_DIRECTORIES = link directories, useful for rpath on Unix<br>## GSL_EXE_LINKER_FLAGS = rpath on Unix<br>##<br>## Felix Woelk 07/2004<br>## minor corrections Jan Woetzel
<br>##<br>## <a href="http://www.mip.informatik.uni-kiel.de">www.mip.informatik.uni-kiel.de</a><br>## --------------------------------<br><br>IF(WIN32)<br> MESSAGE(SEND_ERROR "FindGSL.cmake: gnu scientific library GSL not (yet) supported on WIN32")
<br><br>ELSE(WIN32)<br> IF(UNIX)<br> SET(GSL_CONFIG_PREFER_PATH "$ENV{GSL_HOME}/bin" CACHE STRING "preferred path to OpenSG (osg-config)")<br> FIND_PROGRAM(GSL_CONFIG gsl-config<br> ${GSL_CONFIG_PREFER_PATH}
<br> /usr/bin/<br> )<br> # MESSAGE("DBG GSL_CONFIG ${GSL_CONFIG}")<br><br> IF (GSL_CONFIG)<br> # set CXXFLAGS to be fed into CXX_FLAGS by the user:<br> SET(GSL_CXX_FLAGS "`${GSL_CONFIG} --cflags`")
<br><br> # set INCLUDE_DIRS to prefix+include<br> EXEC_PROGRAM(${GSL_CONFIG}<br> ARGS --prefix<br> OUTPUT_VARIABLE GSL_PREFIX)<br> SET(GSL_INCLUDE_DIR ${GSL_PREFIX}/include CACHE STRING INTERNAL)
<br><br> # set link libraries and link flags<br> SET(GSL_LIBRARIES "`${GSL_CONFIG} --libs`")<br><br> ## extract link dirs for rpath<br> EXEC_PROGRAM(${GSL_CONFIG}<br> ARGS --libs<br> OUTPUT_VARIABLE GSL_CONFIG_LIBS )
<br><br> ## split off the link dirs (for rpath)<br> ## use regular expression to match wildcard equivalent "-L*<endchar>"<br> ## with <endchar> is a space or a semicolon<br> STRING(REGEX MATCHALL "[-][L]([^ ;])+"
<br> GSL_LINK_DIRECTORIES_WITH_PREFIX<br> "${GSL_CONFIG_LIBS}" )<br> # MESSAGE("DBG GSL_LINK_DIRECTORIES_WITH_PREFIX=${GSL_LINK_DIRECTORIES_WITH_PREFIX}")<br><br> ## remove prefix -L because we need the pure directory for LINK_DIRECTORIES
<br><br> IF (GSL_LINK_DIRECTORIES_WITH_PREFIX)<br> STRING(REGEX
REPLACE "[-][L]" "" GSL_LINK_DIRECTORIES ${GSL_LINK_DIRECTORIES_WITH_PREFIX} )<br> ENDIF (GSL_LINK_DIRECTORIES_WITH_PREFIX)<br> SET(GSL_EXE_LINKER_FLAGS "-Wl,-rpath,${GSL_LINK_DIRECTORIES}" CACHE STRING INTERNAL)
<br> # MESSAGE("DBG GSL_LINK_DIRECTORIES=${GSL_LINK_DIRECTORIES}")<br> # MESSAGE("DBG GSL_EXE_LINKER_FLAGS=${GSL_EXE_LINKER_FLAGS}")<br><br> # ADD_DEFINITIONS("-DHAVE_GSL")
<br> # SET(GSL_DEFINITIONS "-DHAVE_GSL")<br> MARK_AS_ADVANCED(<br> GSL_CXX_FLAGS<br> GSL_INCLUDE_DIR<br> GSL_LIBRARIES<br> GSL_LINK_DIRECTORIES<br> GSL_DEFINITIONS
<br> )<br> MESSAGE(STATUS "Using GSL from ${GSL_PREFIX}")<br><br> ELSE(GSL_CONFIG)<br> MESSAGE("FindGSL.cmake:
gsl-config not found. Please set it manually. GSL_CONFIG=${GSL_CONFIG}")<br> ENDIF(GSL_CONFIG)<br><br> ENDIF(UNIX)<br>ENDIF(WIN32)<br><br><br>IF(GSL_LIBRARIES)<br> IF(GSL_INCLUDE_DIR OR GSL_CXX_FLAGS)<br><br> SET(GSL_FOUND 1)
<br><br> ENDIF(GSL_INCLUDE_DIR OR GSL_CXX_FLAGS)<br>ENDIF(GSL_LIBRARIES)<br><br><br><br></blockquote></div><br>