David Cole wrote:
On Thu, May 5, 2011 at 7:08 AM, J.S. van Bethlehem
<[email protected]
<mailto:[email protected]>> wrote:
Hello,
Today I was trying something along the following lines:
in CMakeLists.txt
set(BASENAME some_text)
set(${BASENAME}_DIR /some/path)
set(${BASENAME}_SHARE /some/other/path)
set(${BASENAME}_INCLUDES file1.h;file2.h;file3.h)
configure_file(config.h.in <http://config.h.in> config.h @ONLY)
and in config.h.in <http://config.h.in> do:
set(INSTALL_PATH @@BASENAME@_DIR@)
foreach(incl ${INSTALL_PATH})
# do something
endforeach(incl ${INSTALL_PATH})
My expectation was that first @BASENAME@ would evaluate to
'some_text' after which @some_text_DIR@ would evaluate to the
respective value. This fails, so the obvious question is: am I
trying something that is simply not possible, or should I use
different syntax to accomplish this?
Why are you putting CMake script code into the file config.h.in
<http://config.h.in>?
Seems like you want to generate the .h.in <http://h.in> file based on
a CMake loop, and *then* use it in a configure_file call...
What do you want the final .h file to look like?
Aah, right, very silly of me using the 'config.h' name. It suggests
somehow that I want to create C(++)(0x) header, but this is not the
case. My apologies - I tried to quickly create a 'minimal example' but
thereby created something that is not even close to what I want to
achieve. Let me be a bit more specific then.
I tend to be quite modular when I write code (even though it's just for
personal use) and I noticed that when creating CMake-files for each of
these pieces I was continuously writing the same CMake script lines for
these pieces. So I decided to create a special CMakeModules-package that
stores .cmake-script files that define these macros. So in the above
example BASENAME would be the name of my module (which I like to store
in a variable to prevent typos when this name is rather long or in case
I want to change it) Then in the example above the *_INCLUDES would be a
list of *.cmake files that define a set of macros, not header-files.
Then what I called config.h.in would be an in-file for a
modulename-config.cmake file. Then when I do find_package(BASENAME) in
my other sources, CMake would find the resulting configuration file,
which would then take care of including the macro-files that are part of
my CMakeModules-package.
Now that I'm reading back, I see I made another mistake: the variable to
the foreach-command should be ${BASENAME}_INCLUDES; this is the piece of
the configuration-file that will read my macro *.cmake files.
Again my apologies for the unclear message. Hopefully the comments I
added now make things a bit clearer.
Yours sincerely,
Jakob van Bethlehem
_______________________________________________
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