浏览代码

cmake: Add macro to compile .tlb files via midl

jp9000 9 年之前
父节点
当前提交
5d332de45c
共有 1 个文件被更改,包括 18 次插入2 次删除
  1. 18 2
      cmake/Modules/IDLFileHelper.cmake

+ 18 - 2
cmake/Modules/IDLFileHelper.cmake

@@ -1,4 +1,4 @@
-macro(add_idl_files generated_files)
+macro(add_idl_files_base generated_files with_tlb)
 	foreach(filename ${ARGN})
 	foreach(filename ${ARGN})
 		get_filename_component(file_we ${filename} NAME_WE)
 		get_filename_component(file_we ${filename} NAME_WE)
 		get_filename_component(file_path ${filename} PATH)
 		get_filename_component(file_path ${filename} PATH)
@@ -9,10 +9,18 @@ macro(add_idl_files generated_files)
 		set(bin_file_c ${CMAKE_CURRENT_BINARY_DIR}/${file_c})
 		set(bin_file_c ${CMAKE_CURRENT_BINARY_DIR}/${file_c})
 
 
 		if(MSVC)
 		if(MSVC)
+			if(${with_tlb})
+				set(file_tlb ${file_we}.tlb)
+				set(bin_file_tlb ${CMAKE_CURRENT_BINARY_DIR}/${file_tlb})
+				set(tlb_opt "")
+			else()
+				set(tlb_opt "/notlb")
+			endif()
+
 			add_custom_command(
 			add_custom_command(
 				OUTPUT ${bin_file_h} ${bin_file_c}
 				OUTPUT ${bin_file_h} ${bin_file_c}
 				DEPENDS ${filename}
 				DEPENDS ${filename}
-				COMMAND midl /h ${file_h} /iid ${file_c} /notlb ${CMAKE_CURRENT_SOURCE_DIR}/${filename}
+				COMMAND midl /h ${file_h} /iid ${file_c} ${tlb_opt} ${CMAKE_CURRENT_SOURCE_DIR}/${filename}
 				WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
 				WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
 		else()
 		else()
 			execute_process(COMMAND echo
 			execute_process(COMMAND echo
@@ -62,4 +70,12 @@ macro(add_idl_files generated_files)
 			PROPERTIES
 			PROPERTIES
 			HEADER_FILE_ONLY TRUE)
 			HEADER_FILE_ONLY TRUE)
 	endforeach(filename ${ARGN})
 	endforeach(filename ${ARGN})
+endmacro(add_idl_files_base)
+
+macro(add_idl_files generated_files)
+	add_idl_files_base(${generated_files} FALSE ${ARGN})
 endmacro(add_idl_files)
 endmacro(add_idl_files)
+
+macro(add_idl_files_with_tlb generated_files)
+	add_idl_files_base(${generated_files} TRUE ${ARGN})
+endmacro(add_idl_files_with_tlb)