Я новичок в проектах CMake и хочу использовать библиотеку файловой системы в своем проекте. Я использую Ubuntu 18.04 с GCC 8.2 и CMake 3.13. Чтобы добиться этого, я попробовал два варианта:
Вариант 1
cmake_minimum_required(VERSION 3.13)
project(TheFsProject)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "-std=c++17 -lstdc++fs")
Это не помогает, так как компилятор все еще не может найти файловую систему
библиотека во время компиляции.
Вариант 2 (скопировано из:
https://www.scivision.co/cmake-cpp-17-filesystem/)
make_minimum_required(VERSION 3.13)
project(TheFsProject)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_REQUIRED_FLAGS -std=c++17)
include(CheckCXXSymbolExists)
CHECK_CXX_SYMBOL_EXISTS(std::filesystem::path::preferred_separator cxx17fs)
if(cxx17fs)
add_executable(TheFsProject main.cpp)
set_property(TARGET TheFsProject PROPERTY CXX_STANDARD 17)
endif()
Это тоже не помогает, так как я получаю ошибку CMake, которую я не получаю
понимать.
(CHECK_CXX_SYMBOL_EXISTS):
CHECK_CXX_SYMBOL_EXISTS Macro invoked with incorrect arguments for macro named: CHECK_CXX_SYMBOL_EXISTS
Мне не хватает глубины в этой теме, поэтому я и пришел сюда. Я не против дополнительной работы, чтобы узнать больше, но я не знаю, где искать. Любая помощь будет оценена!
РЕДАКТИРОВАТЬ 1
Спасибо за ответы, пока! Я сделал Вариант 3 на основе ваших отзывов:
cmake_minimum_required(VERSION 3.13)
project(TheFsProject)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_executable(TheFsProject main.cpp)
target_link_libraries(TheFsProject stdc++fs)
К сожалению, это не решает мою проблему. Во время компиляции по-прежнему выдается ошибка, из-за которой не удается найти заголовок компиляции.
РЕДАКТИРОВАТЬ 2
Спасибо за все ответы до сих пор. Все это поможет. Я попробовал Ашкан его ответ последним (потому что он казался пугающим). Этот возвращает
Компилятору не хватает возможностей файловой системы.
так что я предполагаю, что с этой стороны что-то не так. Это полезно в том смысле, что я теперь знаю, что это, вероятно, не из-за моего файла CMake. Теперь мне нужно выяснить, почему компилятор поддерживает заголовок файловой системы, хотя ...
РЕДАКТИРОВАТЬ 3
Строго говоря, на этот вопрос дан ответ, потому что мой вопрос касается файла CMake. Я собираюсь отметить Ашкан его ответ как решение просто потому, что он произвел следующий шаг в моем поиске неисправностей. Если бы я мог, я бы также отметил Лубгр его ответ, потому что я думаю, что это действительно хороший ответ. Спасибо всем!