filesystem/cmake/GhcHelper.cmake
Steffen Schuemann dc37276a9a Squashed commit of the following:
commit 8d9f245e379d373942c0f49be19dacc9293cdcf0
Merge: 3ceb4b0 857a355
Author: gulrak <s.schuemann@pobox.com>
Date:   Fri May 3 23:52:57 2019 +0200

    Merge branch 'development-v1.1' of https://github.com/gulrak/filesystem into development-v1.1

commit 3ceb4b0e4fe90be46b1fdbdfb7e2b3f160cccf3c
Author: gulrak <s.schuemann@pobox.com>
Date:   Fri May 3 23:51:48 2019 +0200

    Less noisy interoperability testing on weakly_canonial()

commit 38f82a90ef5f4ec1fa341ce3ab34f3836a6bd9ea
Author: gulrak <s.schuemann@pobox.com>
Date:   Fri May 3 23:50:43 2019 +0200

    Additional fix for recursive_directory_iterator

commit 857a3558fb13e8fae76e29b5b91cb76b5e98ea20
Merge: 9da5784 b557b5b
Author: Steffen Schuemann <s.schuemann@pobox.com>
Date:   Fri May 3 23:47:20 2019 +0200

    Merge branch 'development-v1.1' of github.com:gulrak/filesystem into development-v1.1

    # Conflicts:
    #	test/filesystem_test.cpp

commit 9da57846ac4de06c4b0521ab69ea42816fd6a029
Merge: 96e89ae 43e75c3
Author: Steffen Schuemann <s.schuemann@pobox.com>
Date:   Fri May 3 23:42:31 2019 +0200

    Merge remote-tracking branch 'origin/master' into development-v1.1

commit 96e89ae7f9e983cb3d0977d9ba77f421a0c06b0f
Merge: 9d71161 882c60b
Author: Steffen Schuemann <s.schuemann@pobox.com>
Date:   Fri May 3 23:40:18 2019 +0200

    Merge remote-tracking branch 'origin/master' into development-v1.1

commit b557b5b476c085183bd3da72cc9f511df3b52272
Merge: 263a2d2 9d71161
Author: Steffen Schümann <s.schuemann@pobox.com>
Date:   Fri May 3 22:44:25 2019 +0200

    Merge branch 'development-v1.1' of https://github.com/gulrak/filesystem into development-v1.1

commit 263a2d2c5b9f25631513271a6e26a9cb66e8f9da
Author: Steffen Schümann <s.schuemann@pobox.com>
Date:   Fri May 3 22:44:01 2019 +0200

    Work on Windows tests.

commit 9d71161323f22e994b51fda73ebc19af9e67d6e6
Author: Steffen Schuemann <s.schuemann@pobox.com>
Date:   Fri May 3 08:30:40 2019 +0200

    Fix for issues with recursive_directory_iterator not behaving like an input iterator and regarding pop()/depth().

commit 2ac1352b4a37fdb247b56fb63c1e2c3f56761649
Author: gulrak <s.schuemann@pobox.com>
Date:   Thu May 2 09:12:42 2019 +0200

    Refactored builds with std::fs to a CMake macro, added du example, added behaviour switch

commit 624a6f63e5639504c2b554ba89985ef9c01c6fa9
Author: Steffen Schümann <s.schuemann@pobox.com>
Date:   Thu May 2 09:01:15 2019 +0200

    Add path parameters to filesystem_error::what
2019-05-05 08:51:53 +02:00

37 lines
1.6 KiB
CMake

macro(AddExecutableWithStdFS targetName)
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" AND (CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 7.0 OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7.0))
if(APPLE)
include_directories(/usr/local/opt/llvm/include)
link_directories(/usr/local/opt/llvm/lib)
endif()
add_executable(${targetName} ${ARGN})
set_property(TARGET ${targetName} PROPERTY CXX_STANDARD 17)
if(APPLE)
target_link_libraries(${targetName} -lc++fs)
else()
target_compile_options(${targetName} PRIVATE "-stdlib=libc++")
target_link_libraries(${targetName} -stdlib=libc++ -lc++fs)
endif()
target_link_libraries(${targetName} -lc++fs)
target_compile_definitions(${targetName} PRIVATE USE_STD_FS)
endif()
if (CMAKE_COMPILER_IS_GNUCXX AND (CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 8.0 OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 8.0))
add_executable(${targetName} ${ARGN})
set_property(TARGET ${targetName} PROPERTY CXX_STANDARD 17)
target_link_libraries(${targetName} -lstdc++fs)
target_compile_definitions(${targetName} PRIVATE USE_STD_FS)
endif()
if(CMAKE_CXX_COMPILER_ID MATCHES MSVC AND (CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 19.15 OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 19.15))
add_executable(${targetName} ${ARGN})
set_property(TARGET ${targetName} PROPERTY CXX_STANDARD 17)
set_property(TARGET ${targetName} PROPERTY CXX_STANDARD_REQUIRED ON)
target_compile_options(${targetName} PRIVATE "/Zc:__cplusplus")
target_compile_definitions(${targetName} PRIVATE USE_STD_FS _CRT_SECURE_NO_WARNINGS)
endif()
endmacro()