从CMAKE调用MIDL编译器 [英] Invoke MIDL compiler from CMAKE

查看:126
本文介绍了从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编译器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆