[CMake] recognizing shell in use
Ajay Panyala
ajay at csc.lsu.edu
Tue Mar 6 13:22:15 EST 2012
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/test.class
COMMAND ${JAVAC_COMPILER} -d ${PROJECT_BINARY_DIR}
${PROJECT_BINARY_DIR}/test.java
DEPENDS ${PROJECT_BINARY_DIR}/test.java
COMMENT "Compiling test.java"
VERBATIM)
add_custom_target(compile-test-java
DEPENDS ${PROJECT_BINARY_DIR}/test.class)
I tried this. It builds as expected initially. But when I change test.java
and run
make, it is not re-compiled.
It looks like test.java is a generated file, so depending on how you
generate it, you also need to set the GENERATED source file property to
TRUE in order for this to work.
test.java is not a generated file. I am modifying it manually and trying to
build.
Thanks
Ajay
On Tue, Mar 6, 2012 at 7:43 AM, Michael Wild <themiwi at gmail.com> wrote:
> That's the wrong way to go about things. Rather than putting the COMMAND
> in the custom target, put it in a add_custom_command() call and make the
> custom target DEPENDS on it. Then you let the build system handle the
> dependencies. E.g. like this:
>
> find_program(JAVAC_COMPILER javac PATH_SUFFIXES bin ENV JAVA_HOME)
>
> add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/test.class
> COMMAND ${JAVAC_COMPILER} -d ${PROJECT_BINARY_DIR}
> ${PROJECT_BINARY_DIR}/test.java
> DEPENDS ${PROJECT_BINARY_DIR}/test.java
> COMMENT "Compiling test.java"
> VERBATIM)
>
> add_custom_target(compile-test-java
> DEPENDS ${PROJECT_BINARY_DIR}/test.class)
>
>
> It looks like test.java is a generated file, so depending on how you
> generate it, you also need to set the GENERATED source file property to
> TRUE in order for this to work.
>
> HTH
>
> Michael
>
> On 03/06/2012 04:27 PM, Ajay Panyala wrote:
> > That is because I have a custom target like
> >
> > ADD_CUSTOM_TARGET(testc ALL
> > COMMAND java ${PROJECT_BINARY_DIR}/test.java
> > DEPENDS ${PROJECT_BINARY_DIR}/test.java
> > )
> >
> > I want to build test.java only if it has been changed.
> >
> > Since custom targets are always out-of-date, I wanted to have the
> > command inside the custom target like
> >
> > COMMAND if( test.java has not been modified ) then java build/test.java;
> fi
> >
> > The syntax of *if* differs between different shells. So I wanted to
> > check for
> > the shell first and use the appropriate IF syntax.
> >
> >
> > Thanks
> > Ajay
> >
> >
> > On Mon, Mar 5, 2012 at 11:03 PM, Eric Noulard <eric.noulard at gmail.com
> > <mailto:eric.noulard at gmail.com>> wrote:
> >
> > 2012/3/6 Ajay Panyala <ajay at csc.lsu.edu <mailto:ajay at csc.lsu.edu>>:
> > > Hello,
> > >
> > > Is there anyway that cmake could figure out the shell (bash,csh,..)
> > > that is being use when cmake is invoked on the command line ?
> >
> > May be you can check $ENV{SHELL} ?
> > Why would you like to do that?
> >
> > Usually when using CMake one tries to avoid shell/command interpreter
> > dependency??
> > --
> > Erk
> > Le gouvernement représentatif n'est pas la démocratie --
> > http://www.le-message.org
> >
> >
> >
> >
> >
> >
> >
> > --
> >
> > Powered by www.kitware.com
> >
> > Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
> >
> > Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
> >
> > Follow this link to subscribe/unsubscribe:
> > http://www.cmake.org/mailman/listinfo/cmake
>
> --
>
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20120306/3ee68fa2/attachment.htm>
More information about the CMake
mailing list