On 09/20/2010 01:04 PM, Andreas Pakulat wrote: > On 20.09.10 12:36:28, Sebastian Trüg wrote: >> Hi, >> >> is there a way to get the exact path of a target install path? >> If I have for example some installation rule like: >> >> install(TARGET foobar DESTINATION lib) >> >> I would like to use the path of the foobar lib in my FooBarConfig.cmake >> to set a variable FOOBAR_LIBRARIES. >> Is that possible without resorting to what the Akonadi version does, ie. >> construct a different path for each architecture? > > I don't know what Akonadi does, but usually the config-files are installed > to <prefix>/lib<suffix>/cmake/<yourmodule> so you can easily get at the lib > or bin or share dir by using CMAKE_CURRENT_LIST_FILE variable and > extracting the path from that. Then use a static relative path from that > like "../../" (for lib<suffix>) or "../../bin|share" for bin/share. > > Using some 'heuristics' like guessing architecture and using that is not > necessarily reliable as the person building the codebase can change all > details of the target path by using global cmake variables. > > A quick look through the target properties list doesn't seem to indicate > there is any to extract the final install location. Generally though if you > have install(TARGET foobar DESTINATION lib) then it'll end up in > DESTDIR/<prefix>/lib. But I guess you're using some pre-defined variable(s) > which are platform-dependent?
no, I do not. But since the file extension differs between platforms I would need to have some heuristic unless cmake provides the full path. This is true for libs as well as for executables. That is why Akonadi does the following which I would really like to avoid: if(WIN32) if(MINGW) set(AKONADI_COMMON_LIBRARIES "@AKONADI_LIB_DIR@/libakonadiprotocolinternals.dll.a") else(MINGW) set(AKONADI_COMMON_LIBRARIES "@AKONADI_LIB_DIR@/akonadiprotocolinternals.lib") endif(MINGW) elseif(APPLE) set(AKONADI_COMMON_LIBRARIES "@AKONADI_LIB_DIR@/libakonadiprotocolinternals.dylib") else() set(AKONADI_COMMON_LIBRARIES "@AKONADI_LIB_DIR@/libakonadiprotocolinternals.so") endif() Maybe I am missing something. I am trying to write a SopranoConfig.cmake which creates variables for the libraries and also the executables that are installed. Cheers, Sebastian _______________________________________________ Kde-buildsystem mailing list [email protected] https://mail.kde.org/mailman/listinfo/kde-buildsystem
