|
1 | 1 | cmake_minimum_required(VERSION 3.5.0) |
| 2 | + |
2 | 3 | if (NOT DEFINED GUI_BASE_DIR) |
3 | 4 | if (DEFINED ENV{GUI_BASE_DIR}) |
4 | 5 | set(GUI_BASE_DIR $ENV{GUI_BASE_DIR}) |
@@ -66,69 +67,71 @@ foreach( src_file IN ITEMS ${SRC_FILES}) |
66 | 67 | source_group("${group_name}" FILES "${src_file}") |
67 | 68 | endforeach() |
68 | 69 |
|
| 70 | + |
| 71 | +function(vs_set_all_configurations target_name target_config_name) |
| 72 | + foreach(config ${CMAKE_CONFIGURATION_TYPES}) |
| 73 | + string(TOUPPER ${config} config_upper) |
| 74 | + set_property( |
| 75 | + TARGET ${target_name} |
| 76 | + APPEND PROPERTY MAP_IMPORTED_CONFIG_${config_upper} "${target_config_name}" |
| 77 | + ) |
| 78 | + endforeach() |
| 79 | +endfunction() |
| 80 | + |
| 81 | + |
69 | 82 | # add liboni project |
70 | 83 |
|
71 | 84 | set(LIBONI_DIR "${CMAKE_CURRENT_SOURCE_DIR}/liboni/api/liboni") |
72 | 85 | set(LIBONI_NAME liboni) |
| 86 | +set(LIBONI_PNAME "submodule_${LIBONI_NAME}") |
73 | 87 |
|
74 | | -add_custom_command( |
75 | | - TARGET "${PLUGIN_NAME}" |
76 | | - PRE_BUILD |
77 | | - COMMAND ${CMAKE_MAKE_PROGRAM} "${LIBONI_DIR}/liboni.vcxproj" /p:Configuration=ReleaseStatic /p:Platform=${CMAKE_LIBRARY_ARCHITECTURE} |
78 | | - WORKING_DIRECTORY "${LIBONI_DIR}" |
79 | | - COMMENT "Building liboni" |
80 | | - VERBATIM |
| 88 | +include_external_msproject ( |
| 89 | + ${LIBONI_PNAME} |
| 90 | + "${LIBONI_DIR}/liboni.vcxproj" |
| 91 | + PLATFORM ${CMAKE_LIBRARY_ARCHITECTURE} |
81 | 92 | ) |
82 | 93 |
|
| 94 | +vs_set_all_configurations(${LIBONI_PNAME} "ReleaseStatic") |
| 95 | + |
83 | 96 | add_library("${LIBONI_NAME}" STATIC IMPORTED) |
84 | 97 | set_target_properties("${LIBONI_NAME}" PROPERTIES |
85 | 98 | IMPORTED_LOCATION "${LIBONI_DIR}/${CMAKE_LIBRARY_ARCHITECTURE}/ReleaseStatic/liboni.lib" |
86 | 99 | INTERFACE_INCLUDE_DIRECTORIES "${LIBONI_DIR}") |
87 | 100 |
|
| 101 | +add_dependencies(${LIBONI_NAME} ${LIBONI_PNAME}) |
88 | 102 | target_link_libraries(${PLUGIN_NAME} "${LIBONI_NAME}") |
89 | 103 |
|
90 | 104 | # add riffa project |
91 | 105 |
|
92 | 106 | set(RIFFA_DIR "${CMAKE_CURRENT_SOURCE_DIR}/liboni/drivers/riffa/windows/lib") |
93 | 107 | set(RIFFA_NAME riffa) |
| 108 | +set(RIFFA_PNAME "submodule_${RIFFA_NAME}") |
94 | 109 |
|
95 | | -add_custom_command( |
96 | | - TARGET "${PLUGIN_NAME}" |
97 | | - PRE_BUILD |
98 | | - COMMAND ${CMAKE_MAKE_PROGRAM} "${RIFFA_DIR}/riffa.vcxproj" /p:Configuration=Release /p:Platform=${CMAKE_LIBRARY_ARCHITECTURE} |
99 | | - WORKING_DIRECTORY "${RIFFA_DIR}" |
100 | | - COMMENT "Building riffa" |
101 | | - VERBATIM |
| 110 | +include_external_msproject ( |
| 111 | + ${RIFFA_PNAME} |
| 112 | + "${RIFFA_DIR}/riffa.vcxproj" |
| 113 | + PLATFORM ${CMAKE_LIBRARY_ARCHITECTURE} |
102 | 114 | ) |
103 | 115 |
|
104 | | -add_library("${RIFFA_NAME}" STATIC IMPORTED) |
105 | | -set_target_properties("${RIFFA_NAME}" PROPERTIES |
106 | | - IMPORTED_LOCATION "${RIFFA_DIR}/${CMAKE_LIBRARY_ARCHITECTURE}/Release/riffa.lib" |
107 | | - INTERFACE_INCLUDE_DIRECTORIES "${RIFFA_DIR}") |
108 | | - |
109 | | -target_link_libraries(${PLUGIN_NAME} "${RIFFA_NAME}") |
| 116 | +vs_set_all_configurations(${RIFFA_PNAME} "Release") |
110 | 117 |
|
111 | 118 | # add onidriver_riffa project |
112 | 119 |
|
113 | 120 | set(ONIDRIVER_RIFFA_DIR "${LIBONI_DIR}/drivers/riffa") |
114 | 121 | set(ONIDRIVER_RIFFA_NAME libonidriver_riffa) |
| 122 | +set(ONIDRIVER_RIFFA_PNAME "submodule_${ONIDRIVER_RIFFA_NAME}") |
115 | 123 |
|
116 | | -add_custom_command( |
117 | | - TARGET "${PLUGIN_NAME}" |
118 | | - PRE_BUILD |
119 | | - COMMAND ${CMAKE_MAKE_PROGRAM} "${ONIDRIVER_RIFFA_DIR}/onidriver_riffa.vcxproj" /p:Configuration=Release /p:Platform=${CMAKE_LIBRARY_ARCHITECTURE} |
120 | | - WORKING_DIRECTORY "${ONIDRIVER_RIFFA_DIR}" |
121 | | - COMMENT "Building onidriver_riffa" |
122 | | - VERBATIM |
| 124 | +include_external_msproject ( |
| 125 | + ${ONIDRIVER_RIFFA_PNAME} |
| 126 | + "${ONIDRIVER_RIFFA_DIR}/onidriver_riffa.vcxproj" |
| 127 | + PLATFORM ${CMAKE_LIBRARY_ARCHITECTURE} |
123 | 128 | ) |
124 | 129 |
|
125 | | -add_library("${ONIDRIVER_RIFFA_NAME}" STATIC IMPORTED) |
126 | | -set_target_properties("${ONIDRIVER_RIFFA_NAME}" PROPERTIES |
127 | | - IMPORTED_LOCATION "${ONIDRIVER_RIFFA_DIR}/${CMAKE_LIBRARY_ARCHITECTURE}/Release/onidriver_riffa.lib" |
128 | | - INTERFACE_INCLUDE_DIRECTORIES "${ONIDRIVER_RIFFA_DIR}") |
| 130 | +vs_set_all_configurations(${ONIDRIVER_RIFFA_PNAME} "Release") |
| 131 | + |
129 | 132 |
|
130 | | -target_link_libraries(${PLUGIN_NAME} "${ONIDRIVER_RIFFA_NAME}") |
| 133 | +add_dependencies(${ONIDRIVER_RIFFA_PNAME} ${RIFFA_PNAME}) |
131 | 134 |
|
132 | | -# # Ensure needed DLLs are installed to the shared folder |
| 135 | +# Ensure needed DLLs are installed to the shared folder |
133 | 136 |
|
134 | | -install(FILES "${RIFFA_DIR}/${CMAKE_LIBRARY_ARCHITECTURE}/Release/riffa.dll" "${ONIDRIVER_RIFFA_DIR}/${CMAKE_LIBRARY_ARCHITECTURE}/Release/${ONIDRIVER_RIFFA_NAME}.dll" DESTINATION ${GUI_BIN_DIR}/shared) |
| 137 | +install(FILES "${CMAKE_BINARY_DIR}/${CMAKE_LIBRARY_ARCHITECTURE}/$<CONFIG>/riffa.dll" "${CMAKE_BINARY_DIR}/${CMAKE_LIBRARY_ARCHITECTURE}/$<CONFIG>/${ONIDRIVER_RIFFA_NAME}.dll" DESTINATION ${GUI_BIN_DIR}/shared) |
0 commit comments