[CMake] variable substitution for command arguments
Petr Kmoch
petr.kmoch at gmail.com
Fri Mar 20 11:15:00 EDT 2015
Hi.
You're already (partially) doing it, with the CMAKE_SOURCE_DIR and
Boost_INCLUDE_DIRS variables. You can store whatever list of arguments you
want in a variable and expand it in the proper place. For example this:
set(MyArgs -d sqlite --sqlite-override-null --std c++11 --profile boost
--generate-query -I${CMAKE_SOURCE_DIR} -I${Boost_INCLUDE_DIRS}
--include-prefix dir_odb --changelog ${CMAKE_SOURCE_DIR}/odb/file.xml)
add_custom_command(
TARGET markets_odb
PRE_BUILD
COMMAND odb ARGS ${MyArgs} ${CMAKE_CURRENT_SOURCE_DIR}/file1.hpp
COMMAND odb ARGS ${MyArgs} ${CMAKE_CURRENT_SOURCE_DIR}/file2.hpp
)
Remember that what CMake actually does is parse some strings and lists. You
could even do this (I wouldn't recommend it, but just to show what's
possible):
set(MyCommand COMMAND odb ARGS -d sqlite --sqlite-override-null --std c++11
--profile boost --generate-query -I${CMAKE_SOURCE_DIR}
-I${Boost_INCLUDE_DIRS} --include-prefix dir_odb --changelog
${CMAKE_SOURCE_DIR}/odb/file.xml)
add_custom_command(
TARGET markets_odb
PRE_BUILD
${MyCommand} ${CMAKE_CURRENT_SOURCE_DIR}/file1.hpp
${MyCommand} ${CMAKE_CURRENT_SOURCE_DIR}/file2.hpp
)
Petr
On Fri, Mar 20, 2015 at 3:43 PM, MM <finjulhich at gmail.com> wrote:
> I have the following code:
>
> ADD_CUSTOM_COMMAND(TARGET markets_odb
> PRE_BUILD
> COMMAND odb ARGS -d sqlite --sqlite-override-null --std c++11 --profile
> boost --generate-query
> -I${CMAKE_SOURCE_DIR} -I${Boost_INCLUDE_DIRS}
> --include-prefix dir_odb
> --changelog ${CMAKE_SOURCE_DIR}/odb/file.xml
> ${CMAKE_CURRENT_SOURCE_DIR}/file1.hpp
> COMMAND odb ARGS -d sqlite --sqlite-override-null --std c++11 --profile
> boost --generate-query
> -I${CMAKE_SOURCE_DIR} -I${Boost_INCLUDE_DIRS}
> --include-prefix dir_odb
> --changelog ${CMAKE_SOURCE_DIR}/odb/file.xml
> ${CMAKE_CURRENT_SOURCE_DIR}/file2.hpp
> ...
> )
>
>
> I have a few more files than the above 2.
>
> Can I factorize part the command args to reduce the repeated part?
>
> MM
>
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For more
> information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/cmake
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20150320/30a1f5f2/attachment-0001.html>
More information about the CMake
mailing list