[CMake] CMake target_link_libraries items should be quoted or not? Linux/Ubuntu 14.04 cmake 3.4.1

Petr Kmoch petr.kmoch at gmail.com
Thu Dec 10 03:15:06 EST 2015


Hi,

yes, that is indeed expected behaviour. target_link_libraries() takes a
CMake list of arguments - one library per argument. When you surround the
thing with quotes, it's a single argument (containing some spaces). So for
this call:

target_link_libraries(Debug "${VTK_LIBRARIES} -lsri-spatialfft
-lsri-spatial -lsri-memory")

CMake will instruct the linker to look for a library named "<whatever's in
VTK_LIBRARIES> -sri-spatialfft -lsri-spatial -lsri-memory" (one file name
with spaces and semicolons in it). Since such a library does not exist,
that fails.

Without the quotes, each element of the list VTK_LIBRARIES will be a
separate argument to target_link_libraries, as will "-lsri-spatialfft",
"-lsri-spatial", and "-lsri-memory".

Side note: you probably shouldn't be using the -l prefix with arguments to
target_link_libraries(). The arguments are normally supposed to be either
CMake target names, or full paths to the libraries you want to link. No
need to prefix them with linker command-line options, CMake does that for
you accordingly.

Petr

On Wed, Dec 9, 2015 at 6:22 PM, Normand Robert <
normand.robert at sri.utoronto.ca> wrote:

> robert at kalymnos:~/Code/Debug/normandBuild$ cmake --version
> cmake version 3.4.1
>
> Reading docs trying to understand why my build works when I write
>
> target_link_libraries(Debug ${VTK_LIBRARIES} -lsri-spatialfft
> -lsri-spatial -lsri-memory)
>
> but not when everything is protected in quotes:
>
> target_link_libraries(Debug "${VTK_LIBRARIES} -lsri-spatialfft
> -lsri-spatial -lsri-memory")
>
> which causes an extra library which does not exist to be passed to the
> linker. Is this expected behaviour?
>
> --
> Normand Robert PhD
> Sunnybrook Health Sciences Centre
> Room S632, 2075 Bayview Avenue, Toronto, ON M4N 3M5
>
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For more
> information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/cmake
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20151210/5f9ddbdc/attachment.html>


More information about the CMake mailing list