【发布时间】:2018-04-03 09:13:48
【问题描述】:
我打算将 MIDL 编译器与 CMAKE 一起使用,但无法从 CmakeList 调用 MIDL 编译器
这是我用来实现目标的命令
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/IFace.h ${CMAKE_CURRENT_BINARY_DIR}/GUIDS.c ${CMAKE_CURRENT_BINARY_DIR}/Proxy.c ${CMAKE_CURRENT_BINARY_DIR}/ProxyDll.c
COMMAND midl /h IFace.h /iid GUIDS.c /proxy Proxy.c /dlldata ProxyDll.c ${CMAKE_CURRENT_LIST_DIR}/include/Server.idl
)
当我构建我的项目时,${CMAKE_CURRENT_BINARY_DIR} 中没有 MIDL 编译器生成的文件
但是用这个签名文件生成得很好
add_custom_command(
PRE_BUILD
TARGET ${PROJECT_NAME}
COMMAND midl /h IFace.h /iid GUIDS.c /proxy Proxy.c /dlldata ProxyDll.c ${CMAKE_CURRENT_LIST_DIR}/include/Server.idl
)
我做错了什么?
【问题讨论】:
-
就其本身而言,
add_custom_command是行不通的;您需要将其 OUTPUT 作为某些add_custom_target调用的 DEPENDS 部分。add_custom_command(PRE_BUILD)是命令的一种特殊形式,它会自动附加到它的 TARGET。 -
@Tsyvarev 谢谢,我不知道它是如何工作的。