Bill Hoffman wrote:
So, you create a custom command that runs your parser and creates a full CMakeLists.txt file to build the output of the parser. Then run ctest --build-and-test on that directory to build the parser output. What is the output of the parser? Is it a program or a library, or both?

The output of the parser is simply .c/.h files that are then compiled with CMake to create the executable (linked with other existing .c/.h files and libs).

I do not want to require CMake CVS, because I want people who download my app to be able to compile the sources. I do not want them to have to install CVS copies of CMake. Here is how it works from the command line...

$ euc -outdir interpreter parser.e
... builds ...
$ ls interpreter
parser.c main.c main.h regex.c sequence.c value.c
$

The translator/generator always generates main.c. So, I can depend on that. But the others I must dynamically place into a CMake variable for later use as:

ADD_EXECUTABLE( myapp ${GENERATED_SOURCE_LIST} )

That's all I am doing. The original CMake file I wrote did a FILE( GLOB GENERATED_SOURCE_LIST interpreter/*.c ) ... and this worked fine if you invoked make twice. i.e. the first time it saw that a custom command needed to be run, it ran it. However, the FILE( GLOB ... ) was empty because it ran before the generator ran. Thus, the compile failed because of all sorts of missing files. Run make again, and this time the FILE( GLOB ... ) was populated correctly because the C files where in the dir. The app the builds great.

Jeremy

_______________________________________________
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

Reply via email to