Skip to content

Commit cef8edf

Browse files
authored
fix windows ninja build failed (#103)
1 parent 994b1bf commit cef8edf

File tree

3 files changed

+48
-73
lines changed

3 files changed

+48
-73
lines changed

CMakeLists.txt

+10-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ include(GNUInstallDirs)
1515

1616
string(COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}" PROJECT_IS_TOP_LEVEL)
1717

18+
option(HWINFO_SHARED "Shared build" ON)
19+
option(HWINFO_STATIC "Static build" OFF)
20+
21+
1822
option(BUILD_EXAMPLES "Build example program" ${PROJECT_IS_TOP_LEVEL})
1923
option(BUILD_TESTING "Build test program" ${PROJECT_IS_TOP_LEVEL})
2024

@@ -28,6 +32,12 @@ option(HWINFO_GPU "Enable GPU information" ON)
2832
option(HWINFO_GPU_OPENCL "Enable OpenCL for more GPU information" OFF)
2933
option(HWINFO_BATTERY "Enable battery information" ON)
3034

35+
if(NOT HWINFO_STATIC AND HWINFO_SHARED)
36+
set(HWINFO_BUILD SHARED)
37+
else(HWINFO_STATIC)
38+
set(HWINFO_BUILD STATIC)
39+
endif()
40+
3141
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
3242
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
3343

@@ -63,5 +73,4 @@ if(BUILD_TESTING)
6373
include(CTest)
6474
add_subdirectory(test)
6575
add_test(system_info system_info)
66-
add_test(system_info_stand_alone system_info_stand_alone)
6776
endif()

examples/CMakeLists.txt

+1-3
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@ else ()
1313
endif ()
1414

1515
add_executable(system_info system_infoMain.cpp)
16-
add_executable(system_info_stand_alone system_infoMain.cpp)
1716

1817
target_link_libraries(system_info PRIVATE hwinfo::hwinfo fmt::fmt)
19-
target_link_libraries(system_info_stand_alone PRIVATE hwinfo::hwinfo_static fmt::fmt)
2018

21-
install(TARGETS system_info system_info_stand_alone)
19+
install(TARGETS system_info)

src/CMakeLists.txt

+37-69
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,6 @@ target_include_directories(hwinfo INTERFACE $<BUILD_INTERFACE:${HWINFO_INCLUDE_D
44
add_library(hwinfo::hwinfo ALIAS hwinfo)
55
set_target_properties(hwinfo PROPERTIES OUTPUT_NAME "hwinfo")
66

7-
add_library(hwinfo_static INTERFACE)
8-
target_include_directories(hwinfo_static INTERFACE $<BUILD_INTERFACE:${HWINFO_INCLUDE_DIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
9-
add_library(hwinfo::hwinfo_static ALIAS hwinfo_static)
10-
set_target_properties(hwinfo_static PROPERTIES OUTPUT_NAME "hwinfo")
11-
127
# === Components =======================================================================================================
138
# ----- BATTERY --------------------------------------------------------------------------------------------------------
149
if (HWINFO_BATTERY)
@@ -21,26 +16,20 @@ if (HWINFO_BATTERY)
2116
windows/utils/wmi_wrapper.cpp
2217
)
2318

24-
add_library(hwinfo_battery SHARED ${BATTERY_SRC_FILES})
25-
target_compile_definitions(hwinfo_battery PUBLIC -DHWINFO_EXPORTS)
19+
add_library(hwinfo_battery ${HWINFO_BUILD} ${BATTERY_SRC_FILES})
20+
if(${HWINFO_SHARED})
21+
target_compile_definitions(hwinfo_battery PUBLIC -DHWINFO_EXPORTS)
22+
endif()
2623
target_include_directories(hwinfo_battery PUBLIC $<BUILD_INTERFACE:${HWINFO_INCLUDE_DIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
2724
if(APPLE)
2825
target_link_libraries(hwinfo_battery PRIVATE "-framework IOKit" "-framework CoreFoundation")
2926
endif()
3027

31-
add_library(hwinfo_battery_static STATIC ${BATTERY_SRC_FILES})
32-
target_include_directories(hwinfo_battery_static PUBLIC $<BUILD_INTERFACE:${HWINFO_INCLUDE_DIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
33-
if(APPLE)
34-
target_link_libraries(hwinfo_battery_static PRIVATE "-framework IOKit" "-framework CoreFoundation")
35-
endif()
36-
3728
target_link_libraries(hwinfo INTERFACE hwinfo_battery)
38-
target_link_libraries(hwinfo_static INTERFACE hwinfo_battery_static)
3929

4030
set_target_properties(hwinfo_battery PROPERTIES OUTPUT_NAME "hwinfo_battery")
41-
set_target_properties(hwinfo_battery_static PROPERTIES OUTPUT_NAME "hwinfo_battery")
4231

43-
install(TARGETS hwinfo_battery hwinfo_battery_static
32+
install(TARGETS hwinfo_battery
4433
EXPORT hwinfoTargets
4534
LIBRARY DESTINATION lib
4635
ARCHIVE DESTINATION lib)
@@ -61,20 +50,17 @@ if (HWINFO_CPU)
6150
linux/utils/filesystem.cpp
6251
)
6352

64-
add_library(hwinfo_cpu SHARED ${CPU_SRC_FILES})
65-
target_compile_definitions(hwinfo_cpu PUBLIC -DHWINFO_EXPORTS)
53+
add_library(hwinfo_cpu ${HWINFO_BUILD} ${CPU_SRC_FILES})
54+
if(${HWINFO_SHARED})
55+
target_compile_definitions(hwinfo_cpu PUBLIC -DHWINFO_EXPORTS)
56+
endif()
6657
target_include_directories(hwinfo_cpu PUBLIC $<BUILD_INTERFACE:${HWINFO_INCLUDE_DIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
6758

68-
add_library(hwinfo_cpu_static STATIC ${CPU_SRC_FILES})
69-
target_include_directories(hwinfo_cpu_static PUBLIC $<BUILD_INTERFACE:${HWINFO_INCLUDE_DIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
70-
7159
target_link_libraries(hwinfo INTERFACE hwinfo_cpu)
72-
target_link_libraries(hwinfo_static INTERFACE hwinfo_cpu_static)
7360

7461
set_target_properties(hwinfo_cpu PROPERTIES OUTPUT_NAME "hwinfo_cpu")
75-
set_target_properties(hwinfo_cpu_static PROPERTIES OUTPUT_NAME "hwinfo_cpu")
7662

77-
install(TARGETS hwinfo_cpu hwinfo_cpu_static
63+
install(TARGETS hwinfo_cpu
7864
EXPORT hwinfoTargets
7965
LIBRARY DESTINATION lib
8066
ARCHIVE DESTINATION lib)
@@ -94,26 +80,21 @@ if (HWINFO_DISK)
9480
linux/utils/filesystem.cpp
9581
)
9682

97-
add_library(hwinfo_disk SHARED ${DISK_SRC_FILES})
98-
target_compile_definitions(hwinfo_disk PUBLIC -DHWINFO_EXPORTS)
83+
add_library(hwinfo_disk ${HWINFO_BUILD} ${DISK_SRC_FILES})
84+
if(${HWINFO_SHARED})
85+
target_compile_definitions(hwinfo_disk PUBLIC -DHWINFO_EXPORTS)
86+
endif()
9987
target_include_directories(hwinfo_disk PUBLIC $<BUILD_INTERFACE:${HWINFO_INCLUDE_DIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
10088
if(APPLE)
10189
target_link_libraries(hwinfo_disk PRIVATE "-framework IOKit" "-framework CoreFoundation")
10290
endif()
10391

104-
add_library(hwinfo_disk_static STATIC ${DISK_SRC_FILES})
105-
target_include_directories(hwinfo_disk_static PUBLIC $<BUILD_INTERFACE:${HWINFO_INCLUDE_DIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
106-
if(APPLE)
107-
target_link_libraries(hwinfo_disk_static PRIVATE "-framework IOKit" "-framework CoreFoundation")
108-
endif()
10992

11093
target_link_libraries(hwinfo INTERFACE hwinfo_disk)
111-
target_link_libraries(hwinfo_static INTERFACE hwinfo_disk_static)
11294

11395
set_target_properties(hwinfo_disk PROPERTIES OUTPUT_NAME "hwinfo_disk")
114-
set_target_properties(hwinfo_disk_static PROPERTIES OUTPUT_NAME "hwinfo_disk")
11596

116-
install(TARGETS hwinfo_disk hwinfo_disk_static
97+
install(TARGETS hwinfo_disk
11798
EXPORT hwinfoTargets
11899
LIBRARY DESTINATION lib
119100
ARCHIVE DESTINATION lib)
@@ -140,28 +121,22 @@ if (HWINFO_GPU)
140121
add_subdirectory(opencl)
141122
endif ()
142123

143-
add_library(hwinfo_gpu SHARED ${GPU_SRC_FILES})
144-
target_compile_definitions(hwinfo_gpu PUBLIC -DHWINFO_EXPORTS)
124+
add_library(hwinfo_gpu ${HWINFO_BUILD} ${GPU_SRC_FILES})
125+
if(${HWINFO_SHARED})
126+
target_compile_definitions(hwinfo_gpu PUBLIC -DHWINFO_EXPORTS)
127+
endif()
145128
if(HWINFO_GPU_OPENCL)
146129
target_compile_definitions(hwinfo_gpu PUBLIC USE_OCL)
147130
target_link_libraries(hwinfo_gpu PRIVATE opencl_device)
148131
endif ()
149132
target_include_directories(hwinfo_gpu PUBLIC $<BUILD_INTERFACE:${HWINFO_INCLUDE_DIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
150133

151-
add_library(hwinfo_gpu_static STATIC ${GPU_SRC_FILES})
152-
if(HWINFO_GPU_OPENCL)
153-
target_compile_definitions(hwinfo_gpu_static PUBLIC USE_OCL)
154-
target_link_libraries(hwinfo_gpu_static PRIVATE opencl_device)
155-
endif ()
156-
target_include_directories(hwinfo_gpu_static PUBLIC $<BUILD_INTERFACE:${HWINFO_INCLUDE_DIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
157134

158135
target_link_libraries(hwinfo INTERFACE hwinfo_gpu)
159-
target_link_libraries(hwinfo_static INTERFACE hwinfo_gpu_static)
160136

161137
set_target_properties(hwinfo_gpu PROPERTIES OUTPUT_NAME "hwinfo_gpu")
162-
set_target_properties(hwinfo_gpu_static PROPERTIES OUTPUT_NAME "hwinfo_gpu")
163138

164-
install(TARGETS hwinfo_gpu hwinfo_gpu_static
139+
install(TARGETS hwinfo_gpu
165140
EXPORT hwinfoTargets
166141
LIBRARY DESTINATION lib
167142
ARCHIVE DESTINATION lib)
@@ -185,20 +160,17 @@ if (HWINFO_MAINBOARD)
185160
linux/utils/filesystem.cpp
186161
)
187162

188-
add_library(hwinfo_mainboard SHARED ${MAINBOARD_SRC_FILES})
189-
target_compile_definitions(hwinfo_mainboard PUBLIC -DHWINFO_EXPORTS)
163+
add_library(hwinfo_mainboard ${HWINFO_BUILD} ${MAINBOARD_SRC_FILES})
164+
if(${HWINFO_SHARED})
165+
target_compile_definitions(hwinfo_mainboard PUBLIC -DHWINFO_EXPORTS)
166+
endif()
190167
target_include_directories(hwinfo_mainboard PUBLIC $<BUILD_INTERFACE:${HWINFO_INCLUDE_DIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
191168

192-
add_library(hwinfo_mainboard_static STATIC ${MAINBOARD_SRC_FILES})
193-
target_include_directories(hwinfo_mainboard_static PUBLIC $<BUILD_INTERFACE:${HWINFO_INCLUDE_DIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
194-
195169
target_link_libraries(hwinfo INTERFACE hwinfo_mainboard)
196-
target_link_libraries(hwinfo_static INTERFACE hwinfo_mainboard_static)
197170

198171
set_target_properties(hwinfo_mainboard PROPERTIES OUTPUT_NAME "hwinfo_mainboard")
199-
set_target_properties(hwinfo_mainboard_static PROPERTIES OUTPUT_NAME "hwinfo_mainboard")
200172

201-
install(TARGETS hwinfo_mainboard hwinfo_mainboard_static
173+
install(TARGETS hwinfo_mainboard
202174
EXPORT hwinfoTargets
203175
LIBRARY DESTINATION lib
204176
ARCHIVE DESTINATION lib)
@@ -219,20 +191,19 @@ if (HWINFO_OS)
219191
linux/utils/filesystem.cpp
220192
)
221193

222-
add_library(hwinfo_os SHARED ${OS_SRC_FILES})
223-
target_compile_definitions(hwinfo_os PUBLIC -DHWINFO_EXPORTS)
194+
add_library(hwinfo_os ${HWINFO_BUILD} ${OS_SRC_FILES})
195+
if(${HWINFO_SHARED})
196+
target_compile_definitions(hwinfo_os PUBLIC -DHWINFO_EXPORTS)
197+
endif()
224198
target_include_directories(hwinfo_os PUBLIC $<BUILD_INTERFACE:${HWINFO_INCLUDE_DIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
225199

226-
add_library(hwinfo_os_static STATIC ${OS_SRC_FILES})
227-
target_include_directories(hwinfo_os_static PUBLIC $<BUILD_INTERFACE:${HWINFO_INCLUDE_DIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
200+
228201

229202
target_link_libraries(hwinfo INTERFACE hwinfo_os)
230-
target_link_libraries(hwinfo_static INTERFACE hwinfo_os_static)
231203

232204
set_target_properties(hwinfo_os PROPERTIES OUTPUT_NAME "hwinfo_os")
233-
set_target_properties(hwinfo_os_static PROPERTIES OUTPUT_NAME "hwinfo_os")
234205

235-
install(TARGETS hwinfo_os hwinfo_os_static
206+
install(TARGETS hwinfo_os
236207
EXPORT hwinfoTargets
237208
LIBRARY DESTINATION lib
238209
ARCHIVE DESTINATION lib)
@@ -253,20 +224,17 @@ if (HWINFO_RAM)
253224
linux/utils/filesystem.cpp
254225
)
255226

256-
add_library(hwinfo_ram SHARED ${RAM_SRC_FILES})
257-
target_compile_definitions(hwinfo_ram PUBLIC -DHWINFO_EXPORTS)
227+
add_library(hwinfo_ram ${HWINFO_BUILD} ${RAM_SRC_FILES})
228+
if(${HWINFO_SHARED})
229+
target_compile_definitions(hwinfo_ram PUBLIC -DHWINFO_EXPORTS)
230+
endif()
258231
target_include_directories(hwinfo_ram PUBLIC $<BUILD_INTERFACE:${HWINFO_INCLUDE_DIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
259232

260-
add_library(hwinfo_ram_static STATIC ${RAM_SRC_FILES})
261-
target_include_directories(hwinfo_ram_static PUBLIC $<BUILD_INTERFACE:${HWINFO_INCLUDE_DIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
262-
263233
target_link_libraries(hwinfo INTERFACE hwinfo_ram)
264-
target_link_libraries(hwinfo_static INTERFACE hwinfo_ram_static)
265234

266235
set_target_properties(hwinfo_ram PROPERTIES OUTPUT_NAME "hwinfo_ram")
267-
set_target_properties(hwinfo_ram_static PROPERTIES OUTPUT_NAME "hwinfo_ram")
268236

269-
install(TARGETS hwinfo_ram hwinfo_ram_static
237+
install(TARGETS hwinfo_ram
270238
EXPORT hwinfoTargets
271239
LIBRARY DESTINATION lib
272240
ARCHIVE DESTINATION lib)
@@ -276,7 +244,7 @@ endif ()
276244

277245
install(FILES ${HWINFO_INCLUDE_DIR}/hwinfo/platform.h ${HWINFO_INCLUDE_DIR}/hwinfo/hwinfo.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/hwinfo)
278246
install(DIRECTORY ${HWINFO_INCLUDE_DIR}/hwinfo/utils DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/hwinfo)
279-
install(TARGETS hwinfo hwinfo_static
247+
install(TARGETS hwinfo
280248
EXPORT hwinfoTargets
281249
LIBRARY DESTINATION lib
282250
ARCHIVE DESTINATION lib

0 commit comments

Comments
 (0)