Robert Dailey wrote:
On Thu, Dec 4, 2008 at 4:06 PM, Alexander Neundorf <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:

    But, if you do in cmake:
    target_link_libraries(staticLibB staticLibA)
    this will not really link (as it would for a shared lib), but it will
    nevertheless keep track of the dependencies.
    So when liking
    target_link_libraries(myApp staticLibB)
    cmake knows that it has to add staticLibA to the linker command.


But that's one of the things that really bothers me. This is that redundancy I was talking about earlier. If I do:

add_dependencies( C B )
target_link_libraries( C staticLibB )

It's a bit pointless. For example, CMake should be smart enough to know that by adding a dependency to B, it should look at the library that it is outputting (In this case, staticLibB.lib) and add that to an implicit call to target_link_libraries(). I only want to use target_link_libraries() to link against external third party libraries that aren't explicitly represented as a project in my CMake build process.

If I decide to change the output name for the static library B outputs, I'm forced to then revisit all of the target_link_libraries() calls and rename staticLibB. This is a management issue (amongst other things).


You are missing something. The output name has nothing to do with the name used in target_link_libraries. add_dependencies has nothing to do with linking. It adds an artificial depend between two targets to make sure one is built before the other one for whatever reason needed. If you want to link something, you should use target_link_libraries. For arguments to target_link_libraries you should use the name of the target.


add_library(A ...)
add_library(B ...)
target_link_libraries(B A)
add_executable(C ...)
target_link_libraries(C B)

The above will link C to B and A. The output names of B and A will be correctly used when linking C.

-Bill

_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to