diff --git a/cmake/ta_core_config.cmake b/cmake/ta_core_config.cmake index e1a2c2a..e397758 100644 --- a/cmake/ta_core_config.cmake +++ b/cmake/ta_core_config.cmake @@ -24,7 +24,11 @@ endif() if(CMAKE_CUDA_COMPILER) enable_language(CUDA) find_package(CUDAToolkit REQUIRED) - add_library(tensorarray_core_object OBJECT ${TensorArray_Core_cc} ${TensorArray_Core_cu}) + if(MSVC) + add_library(tensorarray_core_object SHARED ${TensorArray_Core_cc} ${TensorArray_Core_cu}) + else() + add_library(tensorarray_core_object OBJECT ${TensorArray_Core_cc} ${TensorArray_Core_cu}) + endif() set_property(TARGET tensorarray_core_object PROPERTY CUDA_STANDARD 17) set_property(TARGET tensorarray_core_object PROPERTY CUDA_STANDARD_REQUIRED ON) set_property(TARGET tensorarray_core_object PROPERTY CUDA_EXTENSIONS OFF) @@ -32,6 +36,7 @@ if(CMAKE_CUDA_COMPILER) target_include_directories(tensorarray_core_object PRIVATE $<$:${CUDAToolkit_INCLUDE_DIRS}>) if(MSVC) target_compile_definitions(tensorarray_core_object PRIVATE TENSOR_ARRAY_CORE_EXPORTS) + target_link_libraries(tensorarray_core_object PRIVATE $<$:CUDA::cublas>) endif() # find_package(CUDAToolkit REQUIRED) @@ -56,6 +61,21 @@ set_property(TARGET tensorarray_core_object PROPERTY CXX_EXTENSIONS OFF) set_property(TARGET tensorarray_core_object PROPERTY POSITION_INDEPENDENT_CODE 1) # shared and static libraries built from the same object files +if(MSVC) +install( + TARGETS tensorarray_core_object + EXPORT TensorArrayTargets + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + COMPONENT Runtime + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/tensor-array" + COMPONENT Runtime + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}/tensor-array" + COMPONENT Development +) + +add_library(TensorArray::core ALIAS tensorarray_core_object) + +else() add_library(tensorarray_core SHARED $) add_library(tensorarray_core_static STATIC $) @@ -92,3 +112,5 @@ install( add_library(TensorArray::core ALIAS tensorarray_core) add_library(TensorArray::core_static ALIAS tensorarray_core_static) add_library(TensorArray::core_object ALIAS tensorarray_core_object) + +endif() diff --git a/src/tensor-array/core/initializer_wrapper.hh b/src/tensor-array/core/initializer_wrapper.hh index 8245f0b..4a3f56e 100644 --- a/src/tensor-array/core/initializer_wrapper.hh +++ b/src/tensor-array/core/initializer_wrapper.hh @@ -53,16 +53,13 @@ namespace tensor_array typedef const _E* const_iterator; private: -#ifdef __GNUC__ iterator _M_array; size_type _M_len; -#endif public: constexpr initializer_wrapper(const_iterator __a, size_type __l) -#ifdef __GNUC__ - : _M_array(__a), _M_len(__l) { } -#endif + : _M_array(__a), _M_len(__l) + { } constexpr initializer_wrapper(const_iterator __begin, const_iterator __end) : _M_array(__begin), _M_len(__end - __begin) @@ -93,4 +90,4 @@ namespace tensor_array }; #endif // !_MSC_VER } -} \ No newline at end of file +} diff --git a/tests/tensor-array/core/cmake/ta_core_tests.cmake b/tests/tensor-array/core/cmake/ta_core_tests.cmake index da6401d..6f22e82 100644 --- a/tests/tensor-array/core/cmake/ta_core_tests.cmake +++ b/tests/tensor-array/core/cmake/ta_core_tests.cmake @@ -19,6 +19,14 @@ add_executable(tensorarray_core_tests ${TensorArray_tests}) target_include_directories(tensorarray_core_tests PRIVATE ${PROJECT_SOURCE_DIR}/src) target_link_libraries(tensorarray_core_tests PUBLIC TensorArray::core) +set_property(TARGET tensorarray_core_tests PROPERTY C_STANDARD 11) +set_property(TARGET tensorarray_core_tests PROPERTY C_STANDARD_REQUIRED ON) +set_property(TARGET tensorarray_core_tests PROPERTY C_EXTENSIONS OFF) + +set_property(TARGET tensorarray_core_tests PROPERTY CXX_STANDARD 17) +set_property(TARGET tensorarray_core_tests PROPERTY CXX_STANDARD_REQUIRED ON) +set_property(TARGET tensorarray_core_tests PROPERTY CXX_EXTENSIONS OFF) + foreach(test ${TensorArray_tests_src}) get_filename_component(TName ${test} NAME_WE) add_test(NAME ${TName} COMMAND tensorarray_core_tests ${TName})