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