[CMake] add_library/add_executable ordering

Tyler Roscoe tyler at cryptio.net
Wed Jun 24 19:46:41 EDT 2009


On Wed, Jun 24, 2009 at 03:30:33PM -0700, Hai Nguyen wrote:
> add_library( libB ... )
> add_executable( ExecB ... )
> target_link_libraries( ExecB libB )
> 
> but the build order now is: ExecB, libB
> 
> I'm getting link errors because libB doesn't exist yet. If I comment out the
> ExecB stuff, it builds libB.
> 
> Can someone give me a clue on what criteria CMake is using to determine what
> builds first?

I think the order is undefined unless there are dependencies to resolve.

I'm a litle surprised that your B example doesn't work, since I thought
CMake was smart enough to notice that execB needs libB and would thus
build libB first.

Anyway, the way to get the correct build order is by using
add_dependencies(). If you do add_dependencies(execB libB) then
everything should work as expected.

tyler


More information about the CMake mailing list