Não estou familiarizado com o Pro*C, mas parece que você está misturando as duas versões diferentes de
add_custom_command
. A primeira versão
add_custom_command(OUTPUT ...)
é usado para gerar um arquivo que é adicionado como uma dependência de outro destino CMake. Quando esse destino é construído, o comando customizado é executado primeiro para gerar o arquivo de saída. A segunda versão
add_custom_command(TARGET ...)
é usado para definir um comando de pré-compilação, pré-link ou pós-compilação; um que não cria necessariamente um arquivo, mas que é executado em conjunto com a construção do destino associado. Se você tem apenas um alvo que depende da saída do Pro*C, então a primeira versão é provavelmente sua melhor aposta:
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>)