Tôi không quen với Pro * C, nhưng có vẻ như bạn đang trộn hai phiên bản khác nhau của add_custom_command
.
Phiên bản đầu tiên add_custom_command(OUTPUT ...)
được sử dụng để tạo một tệp sau đó được thêm vào như một phần phụ thuộc của một mục tiêu CMake khác. Khi mục tiêu đó được tạo, lệnh tùy chỉnh sẽ được thực thi trước tiên để tạo tệp đầu ra.
Phiên bản thứ hai add_custom_command(TARGET ...)
được sử dụng để xác định một lệnh xây dựng trước, liên kết trước hoặc sau xây dựng; một tệp không nhất thiết phải tạo tệp, nhưng thực thi cùng với việc xây dựng mục tiêu được liên kết.
Nếu bạn chỉ có một mục tiêu phụ thuộc vào đầu ra của Pro * C, thì phiên bản đầu tiên có lẽ là lựa chọn tốt nhất của bạn:
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>)