18

いくつかのファイルを生成するカスタム ビルド ステップを CMake に追加しようとしています。それがどのように機能するかの説明は見つかりませんでした。

C++ 用の ODB によってソース、ヘッダー、および実装ファイルを生成する必要があるプロジェクトがあります。ODB はクラス ヘッダーを引数として取り、プロジェクトで使用するソース ファイルを生成します。

現在、CMakeLists.txt に次のコマンドがあります。

add_custom_command(TARGET ${PROJECT_NAME}
    PRE_BUILD
    COMMAND odb -o /home/david/dev/ --std c++11 -I/home/david/dev/ -d sqlite --generate-    query --generate-schema ${PROMOTER_LIB_PREFIX}/entities/person.hpp
    DEPENDS ${PROJECT_NAME}
    VERBATIM
)

ファイルの場合、person.hppODB はperson-odb.hxx,を生成するはずですがperson-odb.cxxperson-odb.ixx私が使用した CMake コマンドは何も生成しません。端末では、このコマンドは正常に機能します。

私は何を間違っていますか?

EDIT:次の行を追加することで問題を解決できます:

set(FAKE_TARGET fakeTarget)
add_custom_target(fakeTarget
    odb -o /home/david/dev/ --std c++11 -I/home/david/dev/ -d sqlite --generate-query --generate-schema ${PROMOTER_LIB_PREFIX}/entities/person.hpp
)
add_dependencies(${PROJECT_NAME} ${FAKE_TARGET})
4

2 に答える 2

3

私がそれを使用している方法は次のとおりです。

add_custom_command(
    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/gen_icinstrtab.hpp
    COMMAND xsltproc --output ${CMAKE_CURRENT_BINARY_DIR}/gen_icinstrtab.hpp ${CMAKE_SOURCE_DIR}/xml/genictabc.xslt ${CMAKE_SOURCE_DIR}/xml/icminstr.xml
)

add_executable(
    du4

    ${CMAKE_CURRENT_BINARY_DIR}/gen_icinstrtab.hpp
    .
    .
    .
)

重要なのは、.hpp ファイルを add_executable ブロックに追加することでした。

于 2014-12-23T16:20:15.773 に答える