[CMake] Link different libraries in different targets

Matthew Woehlke matthew.woehlke at kitware.com
Tue Apr 2 14:41:29 EDT 2013


On 2013-04-02 12:08, domenico wrote:
> I'm quite new to CMake, so please forgive me if the question seems obvious.
> My project has lines like :
>
> link_directories(/path/to/libA/)
> add_library(my_project SHARED my_file.cpp)
> target_link_libraries(my_project A)
>
> I browsed help and googled a few, but I still wonder how I could set
> "/path/to/libA/" to be different according to targets.
> Something like "/path/to/libA/Foo/" for some targets "/path/to/libA/Bar/"
> for others.
> But my targets are not the basic "Release/Debug/..." ones, more diverse.

Don't do that :-).

In general, using link_directories is discouraged. It is preferred to 
give only targets or full paths to target_link_libraries(). (Use 
find_library as needed to resolve 'pretty' names to full names with 
platform-specific prefixes and suffixes.)

So to have B link to /path/to/Foo/libA, and C link to /path/to/Bar/libA, 
just do:

target_link_libraries(B /path/to/Foo/libA)
target_link_libraries(C /path/to/Bar/libA)

-- 
Matthew



More information about the CMake mailing list