[odb-users] cmake and odt

Johannes Lochmann johannes.lochmann at googlemail.com
Wed Sep 14 03:02:56 EDT 2011


Hi Michal, hi list,

works perfectly!

Thank you

Johannes

Am 11.09.11 23:06, schrieb Michal Snoch:
> Hi Johann,
>
> I had same problem few days before :) I'm not sure if it's the one or 
> the best option to solve
> the problem but that works for me fine.
>
> First of all, you have to have var with headers which you want to 
> parse with odb i.e.
>
> set(core_odb_src header1.h header2.h ... headerN.h)
>
> secondy you have to add something like this (I probably found solution 
> on this group but im not sure ;) )
>
> foreach(_file ${core_odb_src})
>   string(REPLACE ".h" "-odb.cpp" gencppfile ${_file})
>   add_custom_command(
>     OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${gencppfile}
>     COMMAND /usr/local/odb/bin/odb --database pgsql --profile qt 
> --hxx-suffix .hpp --ixx-suffix .ipp --cxx-suffix .cpp
>     --output-dir ${CMAKE_CURRENT_SOURCE_DIR}
>     --generate-query --generate-schema --schema-format embedded
>     ${CMAKE_CURRENT_SOURCE_DIR}/${_file}
>     -I${QT_INCLUDE_DIR}/QtCore
>     -I${QT_INCLUDE_DIR}
>     DEPENDS ${_file}
>     COMMENT "Building odb for ${_file}"
>     )
>   list(APPEND core_lib_src ${gencppfile})
> endforeach()
>
> As you see I need to add some options to odb, but it's not necessary 
> if you not use boost or qt. Im wondering
> if I can set some runtime option in cmake (ie -odb=pathtoodb) so i can 
> do it more flexible?
>
> The last thing is adding the libraries
>
> target_link_libraries(core odb odb-pgsql odb-qt)
>
> Complete cmake file looks like this
>
> set(core_lib_src core.cpp line.cpp)
>
> set(core_lib_headers core.h)
> set(core_odb_src line.h)
>
> INCLUDE(${QT_USE_FILE})
> ADD_DEFINITIONS(${QT_DEFINITIONS})
>
> foreach(_file ${core_odb_src})
>   string(REPLACE ".h" "-odb.cpp" gencppfile ${_file})
>   add_custom_command(
>     OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${gencppfile}
>     COMMAND /usr/local/odb/bin/odb --database pgsql --profile qt 
> --hxx-suffix .hpp --ixx-suffix .ipp --cxx-suffix .cpp
>     --output-dir ${CMAKE_CURRENT_SOURCE_DIR}
>     --generate-query --generate-schema --schema-format embedded
>     ${CMAKE_CURRENT_SOURCE_DIR}/${_file}
>     -I${QT_INCLUDE_DIR}/QtCore
>     -I${QT_INCLUDE_DIR}
>     DEPENDS ${_file}
>     COMMENT "Building odb for ${_file}"
>     )
>   list(APPEND core_lib_src ${gencppfile})
> endforeach()
>
> add_library(core SHARED ${core_lib_src})
>
> target_link_libraries(core odb odb-pgsql odb-qt)
> target_link_libraries(core ${QT_LIBRARIES} plugins)
>
> I hope that help :)
>
> Michal
>
> Dnia 11-09-2011 o 19:40:09 Johannes Lochmann 
> <johannes.lochmann at googlemail.com> napisał(a):
>
>> Hello,
>>
>> is anybody using odb in a cmake environment and can give me some 
>> hints on how to handle the call to the odb compiler?
>>
>> Thank you
>>
>> Johannes
>



More information about the odb-users mailing list