4

我在 cmake for windows 中有一个项目,其中包含一个名为 database.proc 的 Pro*C 源文件,我的目标是从 .proc 文件生成一个 C 源文件并将其添加到项目中以与其他源文件链接,我试图添加一个自定义命令来实现这一点但没有成功

add_custom_command(TARGET myproj OUTPUT PRE_LINK
    COMMAND ${PROC} iname=${PROJECT_SOURCE_DIR}/connection.proc SQLCHECK=SYNTAX
        MODE=ANSI IRECLEN=255 ORECLEN=255
        ONAME=${PROJECT_SOURCE_DIR}/connection.c
    COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_FLAGS}
            ${PROJECT_SOURCE_DIR}/connection.c )

有没有办法做到这一点?

4

1 回答 1

2

我对 Pro*C 不熟悉,但看起来您正在将两个不同版本的add_custom_command.

第一个版本add_custom_command(OUTPUT ...)用于生成一个文件,然后将其添加为另一个 CMake 目标的依赖项。构建该目标时,首先执行自定义命令以生成输出文件。

第二个版本add_custom_command(TARGET ...)用于定义预构建、预链接或构建后命令;一个不一定创建文件,但与构建关联目标一起执行的文件。

如果你只有一个依赖于 Pro*C 输出的目标,那么第一个版本可能是你最好的选择:

add_custom_command(OUTPUT ${PROJECT_SOURCE_DIR}/connection.c
    COMMAND ${PROC} iname=${PROJECT_SOURCE_DIR}/connection.proc SQLCHECK=SYNTAX
        MODE=ANSI IRECLEN=255 ORECLEN=255
        ONAME=${PROJECT_SOURCE_DIR}/connection.c)
add_executable(myproj ${PROJECT_SOURCE_DIR}/connection.c <other sources>)
于 2013-01-23T22:40:12.543 回答