我的公司有自己的idl编译器,我有CMake生成文件作为构建过程的一部分。我希望.idl文件位于visual studio项目中,但这意味着我最终会尝试使用midl编译idl文件(可能会失败)。
我知道我的问题与Adding data files to cmake-generated projects非常相似,但主要区别在于microsoft确实有一个编译器我只是不希望他们使用它。
-update -
以下是函数中的代码示例,它将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,这是我不想要的。
非常感谢任何帮助。
-update 2 -
我可以通过添加/来破解“解决”问题的方法。到visual studio里面的midl命令行(但我不能要求每个开发人员每次构建时都这样做),所以如果有人知道如何从cmake向midl命令行添加一个参数也会有帮助。
答案 0 :(得分:7)
这可能也是一个黑客,但我认为你可以通过将.idl文件标记为HEADER_FILE_ONLY
来实现这一点:
set_source_files_properties(${HEADERS} PROPERTIES HEADER_FILE_ONLY TRUE)