【问题标题】:Adding files to CMake but not compiling them将文件添加到 CMake 但不编译它们
【发布时间】:2013-11-15 18:14:20
【问题描述】:

我的公司有自己的 idl 编译器,我让 CMake 在构建过程中生成文件。我希望 .idl 文件位于 Visual Studio 项目中,但这意味着我最终会导致微软试图用 midl 编译 idl 文件(这很失败)。

我知道我的问题与Adding data files to cmake-generated projects 非常相似,但主要区别在于微软确实有一个编译器,我只是不想让他们使用它。

-更新-

这是一个将 idl 文件添加到解决方案的函数的代码示例(整个代码太多了,但如果有任何声明可能有助于回答问题,请告诉我):

function foo()
    add_custom_command...
    set(HEADERS ${HEADERS} bar.idl PARENT_SCOPE)
    source_group("Source Files\\idl Files" REGULAR_EXPRESSION .*.idl)
endfunction()

然后 - 在我打电话给 foo 之后 - 我打电话给add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS})

我注意到的一件事是,nmake 会按照我想要的方式进行编译,但是 Visual Studio 将调用添加到了我不想要的 midl。

任何帮助将不胜感激。

-更新 2-

我可以通过添加 /? 来破解“解决”问题的方法?到 Visual Studio 中的 midl 命令行(但我不能要求每个开发人员每次构建时都这样做),所以如果有人知道如何从 cmake 向 midl 命令行添加参数,那也会有所帮助。

【问题讨论】:

    标签: visual-studio-2010 cmake


    【解决方案1】:

    这可能也有点小技巧,但我认为您可以通过将 .idl 文件标记为 HEADER_FILE_ONLY 来实现这一点:

    set_source_files_properties(${HEADERS} PROPERTIES HEADER_FILE_ONLY TRUE)
    

    【讨论】:

    • 工作就像一个魅力,并帮助另一件很高兴的事情。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多