[CMake] Problems with parallel builds

Denis Scherbakov denis_scherbakov at yahoo.com
Thu Nov 18 08:34:55 EST 2010


Hi!

What I mean is:

PROJECT(MYPROJECT)

ADD_CUSTOM_COMMAND( OUTPUT "${PROJECT_BINARY_DIR}/MyFile.hh" COMMAND ${CMAKE_COMMAND} -P MyScript.cmake)

SET_SOURCE_FILE_PROPERTIES("${PROJECT_BINARY_DIR}/MyFile.hh" PROPERTIES GENERATED TRUE HEADER_FILE_ONLY TRUE)

SET (MYPROJECT_SRCS
  MyFile.hh
  MyFile.cc
)

ADD_LIBRARY(MYLIB ${MYPROJECT_SRCS})
ADD_LIBRARY(MYLIBpic ${MYPROJECT_SRCS})
SET_TARGET_PROPERTIES(MYLIBpic PROPERTIES COMPILE_FLAGS "-FPIC -DPIC")

$ gmake -j2 all
... MyFile.hh is written two times

So far I understand two targets try to generate MyFile.hh at the same time and there is no way to tell one of them that the file is being built by someone else already.

Denis

--- On Thu, 11/18/10, Eric Noulard <eric.noulard at gmail.com> wrote:

> From: Eric Noulard <eric.noulard at gmail.com>
> Subject: Re: [CMake] Problems with parallel builds
> To: "Denis Scherbakov" <denis_scherbakov at yahoo.com>
> Cc: cmake at cmake.org
> Date: Thursday, November 18, 2010, 5:13 AM
> 2010/11/18 Denis Scherbakov <denis_scherbakov at yahoo.com>:
> > Dear All,
> >
> > I am using CMake 2.8.1 on Linux x86. I have a project
> that needs to be built two times. One with -fPIC, the other
> - without. The project depends on header files that need to
> be generated by an external script.
> >
> > When I build this project with several parallel jobs
> (gmake -j5, for example) to my disappointment CMake calls
> external script several times so at the end I get corrupted
> header files.
> 
> Could you give us the exact CMake rule/command you use to
> generate
> those headers?
> 
> configure_file?
> add_custom_command?
> add_custom_target?
> execute_process?
> ... combination of those ?
> 
> > Does anybody know a cross-platform way of implementing
> a mutex (or something like that) to make sure that
> > scripts that generate files are called only once?
> >
> > So far for me parallel builds do not work with CMake
> at all.
> 
> I did never had any trouble with parallel building with
> CMake on Linux
> with makefile generator so far.
> For build host ranging from 1 processors to 4 processors
> with various -j values.
> 
> -- 
> Erk
> Membre de l'April - « promouvoir et défendre le logiciel
> libre » -
> http://www.april.org
> 


      


More information about the CMake mailing list