[CMake] How to specify library dependencies?
Michael Jackson
mike.jackson at bluequartz.net
Mon Nov 24 17:02:04 EST 2008
On Nov 24, 2008, at 4:29 PM, Robert Dailey wrote:
> On Mon, Nov 24, 2008 at 2:41 PM, Michael Jackson <mike.jackson at bluequartz.net
> > wrote:
> typically you do:
>
> add_executable(main main.cpp)
> target_link_libraries(main a)
>
> and CMake _usually_ picks the correct library for the given platform
> (a.lib, a.so, a.dylib... )
>
> Is that what you were asking?
>
> Yes, you did answer my question exactly, however I did not specify
> the more complex issue.
>
> Some libraries we're using have different library names depending on
> the platform. For example:
>
> a_windows.lib
> a_linux.o
>
> This is why I believed I would need the conditional logic. What
> would you do in this case? Thanks for your help.
>
I guess it would depend on if those other libraries were being
compiled in the same project as the current one.
Basically when you use target_link_libraries (EXE [lib1] [lib2]... )
you need to supply everything between the platform prefix and the
platform suffix.
So, if your library on Windows is a_windows.lib you would supply
"a_windows". If your library is liba_linux.so then supply "a_linux" on
linux.
So, in practice you have:
set(lib_a_name "a")
if (WINDOWS)
set(lib_a_name "a_windows")
elseif(APPLE)
set(lib_a_name "a_osx")
elseif(LINUX)
set(lib_a_name "a_linux")
endif()
target_link_Libraries(exe ${lib_a_name})
_________________________________________________________
Mike Jackson mike.jackson at bluequartz.net
www.bluequartz.net
More information about the CMake
mailing list