44 lines
1.6 KiB
CMake
44 lines
1.6 KiB
CMake
# Copyright (c) OpenMMLab. All rights reserved.
|
|
# Modified from https://github.com/pybind/pybind11/blob/master/tests/CMakeLists.txt
|
|
|
|
if (MSVC)
|
|
set(STD_FS_NO_LIB_NEEDED TRUE)
|
|
else ()
|
|
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/main.cpp
|
|
"#include <filesystem>\nint main(int,char**argv){return std::filesystem::path(argv[0]).string().length();}")
|
|
try_compile(HAS_INC_FS ${CMAKE_CURRENT_BINARY_DIR}
|
|
SOURCES ${CMAKE_CURRENT_BINARY_DIR}/main.cpp
|
|
COMPILE_DEFINITIONS -std=c++17 -c)
|
|
|
|
if (NOT HAS_INC_FS)
|
|
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/main.cpp
|
|
"#include <experimental/filesystem>\nint main(int,char**argv){return std::experimental::filesystem::path(argv[0]).string().length();}")
|
|
endif ()
|
|
|
|
try_compile(
|
|
STD_FS_NO_LIB_NEEDED ${CMAKE_CURRENT_BINARY_DIR}
|
|
SOURCES ${CMAKE_CURRENT_BINARY_DIR}/main.cpp
|
|
COMPILE_DEFINITIONS -std=c++17)
|
|
try_compile(
|
|
STD_FS_NEEDS_STDCXXFS ${CMAKE_CURRENT_BINARY_DIR}
|
|
SOURCES ${CMAKE_CURRENT_BINARY_DIR}/main.cpp
|
|
COMPILE_DEFINITIONS -std=c++17
|
|
LINK_LIBRARIES stdc++fs)
|
|
try_compile(
|
|
STD_FS_NEEDS_CXXFS ${CMAKE_CURRENT_BINARY_DIR}
|
|
SOURCES ${CMAKE_CURRENT_BINARY_DIR}/main.cpp
|
|
COMPILE_DEFINITIONS -std=c++17
|
|
LINK_LIBRARIES c++fs)
|
|
endif ()
|
|
|
|
if (${STD_FS_NO_LIB_NEEDED})
|
|
set(STD_FS_LIB "")
|
|
elseif (${STD_FS_NEEDS_STDCXXFS})
|
|
set(STD_FS_LIB stdc++fs)
|
|
elseif (${STD_FS_NEEDS_CXXFS})
|
|
set(STD_FS_LIB c++fs)
|
|
else ()
|
|
message(WARNING "Unknown C++17 compiler - not passing -lstdc++fs")
|
|
set(STD_FS_LIB "")
|
|
endif ()
|