[CMake] race condition with target_objects

Juan E. Sanchez juan.e.sanchez at gmail.com
Mon Jun 25 15:09:32 EDT 2018


Hi,

I am getting a race condition when I do a parallel build.

Having an OBJECT library in one directory:
ADD_LIBRARY(symdiff_objects OBJECT ${CXX_SRCS} ${MC_SRCS})
set_property(TARGET symdiff_objects PROPERTY POSITION_INDEPENDENT_CODE ON)

And then having that object library being used in another directory:
TARGET_LINK_LIBRARIES (symdiff_tcl $<TARGET_OBJECTS:symdiff_objects> 
${TCL_ARCHIVE})

Results in this error with a parallel build:
  15%] Building CXX object 
src/engine/CMakeFiles/symdiff_static.dir/EquationObject.o
make[2]: *** No rule to make target 
`src/engine/CMakeFiles/symdiff_objects.dir/EquationObject.o', needed by 
`src/tclcomp/libsymdifftcl.dylib'.  Stop.
make[2]: *** Waiting for unfinished jobs....

Serial builds work fine.  How do I tell cmake to wait?  This is cmake 
3.9.0-rc4 running on os x with the makefile generator.

Regards,

Juan


More information about the CMake mailing list