Skip to content

Commit 8247820

Browse files
committed
[cmake] Clean up and improve the CppInterOp config for Windows.
1 parent a6f001d commit 8247820

File tree

1 file changed

+31
-10
lines changed

1 file changed

+31
-10
lines changed

cmake/CppInterOp/CppInterOpConfig.cmake.in

+31-10
Original file line numberDiff line numberDiff line change
@@ -9,39 +9,60 @@ get_filename_component(CPPINTEROP_INSTALL_PREFIX "${CPPINTEROP_INSTALL_PREFIX}"
99
# Determine CMAKE_SHARED_LIBRARY_SUFFIX based on operating system
1010
include(CMakeSystemSpecificInformation)
1111

12+
if(MSVC)
13+
set(shared_lib_dir bin)
14+
else()
15+
set(shared_lib_dir lib)
16+
endif()
17+
1218
### build/install workaround
1319
if (@BUILD_SHARED_LIBS@)
14-
set(__lib_suffix ${CMAKE_SHARED_LIBRARY_SUFFIX})
15-
set(__lib_prefix ${CMAKE_SHARED_LIBRARY_PREFIX})
20+
set(_lib_suffix ${CMAKE_SHARED_LIBRARY_SUFFIX})
21+
set(_lib_prefix ${CMAKE_SHARED_LIBRARY_PREFIX})
1622
else()
17-
set(__lib_suffix ${CMAKE_STATIC_LIBRARY_SUFFIX})
18-
set(__lib_prefix ${CMAKE_STATIC_LIBRARY_PREFIX})
23+
set(_lib_suffix ${CMAKE_STATIC_LIBRARY_SUFFIX})
24+
set(_lib_prefix ${CMAKE_STATIC_LIBRARY_PREFIX})
1925
endif()
2026

2127
if (IS_DIRECTORY "${CPPINTEROP_INSTALL_PREFIX}/include")
2228
set(_include "${CPPINTEROP_INSTALL_PREFIX}/include")
23-
set(_libs "${CPPINTEROP_INSTALL_PREFIX}/lib/${__lib_prefix}clangCppInterOp${__lib_suffix}")
29+
set(_lib "${CPPINTEROP_INSTALL_PREFIX}/${shared_lib_dir}/${_lib_prefix}clangCppInterOp${_lib_suffix}")
2430
else()
2531
set(_include "@CMAKE_CURRENT_SOURCE_DIR@/include")
26-
set(_libs "@CMAKE_CURRENT_BINARY_DIR@/lib/${__lib_prefix}clangCppInterOp${__lib_suffix}")
32+
set(_lib "@CMAKE_CURRENT_BINARY_DIR@/${shared_lib_dir}/${_lib_prefix}clangCppInterOp${_lib_suffix}")
2733
endif()
2834

2935
###
3036

3137
set(CPPINTEROP_EXPORTED_TARGETS "clangCppInterOp")
3238
set(CPPINTEROP_CMAKE_DIR "${_cmake}")
3339
set(CPPINTEROP_INCLUDE_DIRS "${_include}")
34-
set(CPPINTEROP_LIBRARIES "${_libs}")
40+
set(CPPINTEROP_LIBRARIES "${_lib}")
3541

3642
# Provide all our library targets to users.
3743
if (@BUILD_SHARED_LIBS@)
3844
add_library(clangCppInterOp SHARED IMPORTED)
3945
else()
4046
add_library(clangCppInterOp STATIC IMPORTED)
4147
endif()
42-
set_property(TARGET clangCppInterOp PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${_include}")
43-
set_property(TARGET clangCppInterOp PROPERTY IMPORTED_LOCATION "${_libs}")
48+
set_target_properties(clangCppInterOp PROPERTIES
49+
INTERFACE_INCLUDE_DIRECTORIES ${_include}
50+
IMPORTED_LOCATION ${_lib}
51+
)
52+
if (MSVC)
53+
if (IS_DIRECTORY "${CPPINTEROP_INSTALL_PREFIX}/include")
54+
set(_static_lib "${CPPINTEROP_INSTALL_PREFIX}/lib/${_lib_prefix}clangCppInterOp.lib")
55+
else()
56+
set(_static_lib "@CMAKE_CURRENT_BINARY_DIR@/lib/${_lib_prefix}clangCppInterOp.lib")
57+
endif()
58+
59+
set_target_properties(clangCppInterOp PROPERTIES
60+
IMPORTED_IMPLIB ${_static_lib}
61+
)
62+
endif(MSVC)
4463

64+
unset(_lib_prefix)
65+
unset(_lib_suffix)
4566
unset(_cmake)
4667
unset(_include)
47-
unset(_libs)
68+
unset(_lib)

0 commit comments

Comments
 (0)