Skip to content

Commit f80b4be

Browse files
committed
Make CMake use native VS projects in the plugin solution
1 parent 7351dea commit f80b4be

File tree

1 file changed

+37
-34
lines changed

1 file changed

+37
-34
lines changed

CMakeLists.txt

Lines changed: 37 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
cmake_minimum_required(VERSION 3.5.0)
2+
23
if (NOT DEFINED GUI_BASE_DIR)
34
if (DEFINED ENV{GUI_BASE_DIR})
45
set(GUI_BASE_DIR $ENV{GUI_BASE_DIR})
@@ -66,69 +67,71 @@ foreach( src_file IN ITEMS ${SRC_FILES})
6667
source_group("${group_name}" FILES "${src_file}")
6768
endforeach()
6869

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+
6982
# add liboni project
7083

7184
set(LIBONI_DIR "${CMAKE_CURRENT_SOURCE_DIR}/liboni/api/liboni")
7285
set(LIBONI_NAME liboni)
86+
set(LIBONI_PNAME "submodule_${LIBONI_NAME}")
7387

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}
8192
)
8293

94+
vs_set_all_configurations(${LIBONI_PNAME} "ReleaseStatic")
95+
8396
add_library("${LIBONI_NAME}" STATIC IMPORTED)
8497
set_target_properties("${LIBONI_NAME}" PROPERTIES
8598
IMPORTED_LOCATION "${LIBONI_DIR}/${CMAKE_LIBRARY_ARCHITECTURE}/ReleaseStatic/liboni.lib"
8699
INTERFACE_INCLUDE_DIRECTORIES "${LIBONI_DIR}")
87100

101+
add_dependencies(${LIBONI_NAME} ${LIBONI_PNAME})
88102
target_link_libraries(${PLUGIN_NAME} "${LIBONI_NAME}")
89103

90104
# add riffa project
91105

92106
set(RIFFA_DIR "${CMAKE_CURRENT_SOURCE_DIR}/liboni/drivers/riffa/windows/lib")
93107
set(RIFFA_NAME riffa)
108+
set(RIFFA_PNAME "submodule_${RIFFA_NAME}")
94109

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}
102114
)
103115

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")
110117

111118
# add onidriver_riffa project
112119

113120
set(ONIDRIVER_RIFFA_DIR "${LIBONI_DIR}/drivers/riffa")
114121
set(ONIDRIVER_RIFFA_NAME libonidriver_riffa)
122+
set(ONIDRIVER_RIFFA_PNAME "submodule_${ONIDRIVER_RIFFA_NAME}")
115123

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}
123128
)
124129

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+
129132

130-
target_link_libraries(${PLUGIN_NAME} "${ONIDRIVER_RIFFA_NAME}")
133+
add_dependencies(${ONIDRIVER_RIFFA_PNAME} ${RIFFA_PNAME})
131134

132-
# # Ensure needed DLLs are installed to the shared folder
135+
# Ensure needed DLLs are installed to the shared folder
133136

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

Comments
 (0)