本文介绍了从CMAKE调用MIDL编译器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我将在CMAKE中使用MIDL编译器,但无法从CmakeList调用MIDL编译器
I am going to use MIDL compiler with CMAKE but unable to invoke MIDL compiler from CmakeList
这是我用来实现目标的命令
That is command which I use to achieve my goal
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
)
构建项目时,MIDL编译器在 $ {CMAKE_CURRENT_BINARY_DIR}
When I build my project there are no files produced by MIDL compiler in ${CMAKE_CURRENT_BINARY_DIR}
但是使用此签名文件可以很好地生成
But with this signature files generates well
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
)
我在做什么错了?
推荐答案
它是这样工作的:
set(MIDL_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
)
set(MIDL_FILE
${CMAKE_CURRENT_LIST_DIR}/include/Server.idl
)
add_custom_command(
OUTPUT ${MIDL_OUTPUT}
COMMAND midl /h IFace.h /iid GUIDS.c /proxy Proxy.c /dlldata ProxyDll.c ${MIDL_FILE}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${MIDL_FILE}
VERBATIM
)
add_custom_target(midl-cmplr
DEPENDS ${MIDL_OUTPUT}
)
add_dependencies(${PROJECT_NAME}
midl-cmplr
)
set_source_files_properties(
${MIDL_OUTPUT}
PROPERTIES
GENERATED TRUE
)
这篇关于从CMAKE调用MIDL编译器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!