Provide a way to build individual files through cmake
This issue was created automatically from an original Mantis Issue. Further discussion may take place here.
CMake has the --build
command line option providing an abstraction of 'run the build in the specified directory' action. Particular configurations and targets to build can be specified with other options.
A new abstraction could be added for 'build the object for sourcefile f'.
The Makefiles generator already generates targets for each object in each directory. Those targets are not available from the 'top level' of the build dir.
grantlee/make_build$ cmake .. -G "Unix Makefiles"
grantlee/make_build$ make -C templates/lib engine.cpp.o
Ninja has native support for 'building the output of a source file' using '^'.
grantlee/ninja_build$ cmake .. -G Ninja
grantlee/ninja_build$ ninja ../templates/lib/engine.cpp^
grantlee/ninja_build$ cmake --build . --target ../templates/lib/engine.cpp^
Ninja seems to build more dependencies of the object file though too (it runs moc via automoc for example, but make seems not to).
It is unknown whether the IDE generators have a way to build an individual file.
As the syntax is different for different tools, it could be useful for cmake to provide a unified abstraction.