[CMake] [Cygwin] SET_TARGET_PROPERTIES does not work fine

Clark J. Wang dearvoid at gmail.com
Tue May 22 23:01:06 EDT 2007


On 5/23/07, Alan W. Irwin <irwin at beluga.phys.uvic.ca> wrote:
>
> On 2007-05-23 09:50+0800 Clark J. Wang wrote:
>
> > In Cygwin environment I have a C source file named `grep.c' which needs
> > `libpcre' to compile. The CMakeLists.txt writes:
> >
> > PROJECT(myGrep)
> >
> > SET(CMAKE_VERBOSE_MAKEFILE ON)
> >
> > FIND_PROGRAM(PCRE_CONFIG pcre-config)
> > IF(PCRE_CONFIG)
> >   ADD_EXECUTABLE(grep_pcre grep.c)
> >   SET_TARGET_PROPERTIES(grep_pcre
> >       PROPERTIES
> >       COMPILE_FLAGS "-DUSE_PCRE $(shell pcre-config --cflags)"
> >       LINK_FLAGS "$(shell pcre-config --libs)"
> >   )
> > ENDIF(PCRE_CONFIG)
>
> It's possible the above style might be made to work, but I am not sure
> about
> that so let me recommend a style that I know works in general for dealing
> with the results of external configuration scripts (although I have no
> specific experience with pcre-config).


The program `pcre-config' is used to determine paths of libpcre's header
file and library file. Actually in my Cygwin environment the above
CMakeLists.txt is the same as this one:

PROJECT(myGrep)

SET(CMAKE_VERBOSE_MAKEFILE ON)

ADD_EXECUTABLE(grep_pcre grep.c)
SET_TARGET_PROPERTIES(grep_pcre
    PROPERTIES
    COMPILE_FLAGS "-DUSE_PCRE"
    LINK_FLAGS "-L/usr/lib -lpcre"
)

And this CMakeLists.txt does not work either.

I suggest you use EXECUTE_PROCESS twice to run the configuration script to
> determine compiler flags and the full path of the library that you need.
> Store those results in different CMake variables, then use
> SET_SOURCE_FILES_PROPERTIES to set the compile flags, and use
> TARGET_LINK_LIBRARIES to link your executable target to the external
> library (specified with its full path).
>
> Alan
> __________________________
> Alan W. Irwin
>
> Astronomical research affiliation with Department of Physics and
> Astronomy,
> University of Victoria (astrowww.phys.uvic.ca).
>
> Programming affiliations with the FreeEOS equation-of-state implementation
> for stellar interiors (freeeos.sf.net); PLplot scientific plotting
> software
> package (plplot.org); the libLASi project (unifont.org/lasi); the Loads of
> Linux Links project (loll.sf.net); and the Linux Brochure Project
> (lbproject.sf.net).
> __________________________
>
> Linux-powered Science
> __________________________
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://public.kitware.com/pipermail/cmake/attachments/20070523/c384ba6a/attachment.html


More information about the CMake mailing list