Renaud Detry wrote:
OK, CMake does not know what you are doing here. It is treating LDFLAGS like some linker flag. The idea was something like -64 or some other linker specific flag for a platform.
Ok.
If you inject directories into the link line, you are sort of out of luck. Why are you doing it this way?
What other way could I do it?
- There's no official definition of what should be found in LDFLAGS,
  but most of the software that use LDFLAGS (in particular autotools)
  expect you to put non-standard link directories in there.
You should be using FIND_LIBRARY to find the things you want to link in, or at least finding the directory with a FIND_FILE, and then using LINK_DIRECTORIES. LDFLAGS is a bad idea because your users will also have to set this to get it to work.

I don't really agree here. Users can decide to install in a standard
directory (e.g. /usr/local is standard for headers and libs in many
linux distros) and it will work right away. Or users can choose to
install in a non-standard directory like $HOME/usr, and it's their
responsibility to keep their CPPFLAGS & LDFLAGS up to date.

The FIND_* primitives are neat when used with a restricted scope
(cf. CMAKE_LIBRARY_PATH), and I'm ok with keeping the env vars
CMAKE_*_PATH up-to-date. However, I need to keep link dirs in LDFLAGS
anyway because that's what other build systems expect. The point is,
IMHO CMake should:

- Either *ignore* LDFLAGS, and optionally get linker flags other than
  -L from an env var like CMAKE_LINK_FLAGS;

- Either use LDFLAGS, but parse it with respect its content.

For this reason, I think I should report this issue as a bug rather
than a feature request.

Ok, create a bug report. It still is not the CMake way of doing things. CMake should be told the full path to libraries you want to use. That way it knows exactly what you are trying to do. Parsing compiler specific flags out of LDFLAGS to add path information was not what I had in mind when I used LDFLAGS. Perhaps I should not have used it at all, or used a different variable. When I added the ability to use LDFLAGS, I think I was adding support for 64 bit IRIX builds, needed -64 as a linker flag. Although at this point, I can not remove it because of backwards compatibility, so I guess I am stuck with parsing it for -L. But, if you want your stuff to work with a release cmake, you might want to consider doing something different.

And, if anyone else is reading this thread as a beginner, please do not put -L in LDFLAGS!

-Bill
_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to