On Thu, Dec 4, 2008 at 4:20 PM, Bill Hoffman <[EMAIL PROTECTED]>wrote:
> 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. In your sample code above, I noticed you didn't use add_dependencies(). Does target_link_libraries() guarantee build order when targets are specified instead of libraries?
_______________________________________________ CMake mailing list CMake@cmake.org http://www.cmake.org/mailman/listinfo/cmake