[CMake] recognizing shell in use
Michael Wild
themiwi at gmail.com
Tue Mar 6 10:43:23 EST 2012
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
More information about the CMake
mailing list