No estoy familiarizado con Pro*C, pero parece que estás mezclando las dos versiones diferentes de add_custom_command
.
La primera versión add_custom_command(OUTPUT ...)
se usa para generar un archivo que luego se agrega como una dependencia de otro destino de CMake. Cuando se construye ese objetivo, el comando personalizado se ejecuta primero para generar el archivo de salida.
La segunda versión add_custom_command(TARGET ...)
se utiliza para definir un comando previo a la compilación, previo al enlace o posterior a la compilación; uno que no necesariamente crea un archivo, pero que se ejecuta junto con la construcción del objetivo asociado.
Si solo tiene un objetivo que depende de la salida de Pro*C, entonces la primera versión es probablemente su mejor apuesta:
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>)