Je suis nouveau dans les projets CMake et je veux utiliser la bibliothèque du système de fichiers dans mon projet. Je travaille sous Ubuntu 18.04 avec GCC 8.2 et CMake 3.13. Pour y parvenir, j'ai essayé deux options :
Option 1
cmake_minimum_required(VERSION 3.13)
project(TheFsProject)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "-std=c++17 -lstdc++fs")
Cela ne sert à rien car le compilateur ne trouve toujours pas le système de fichiers. lors de la compilation.
Option 2 (copié de : 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()
Cela n'aide pas non plus car j'obtiens une erreur CMake que je n'ai pas. comprends pas.
(CHECK_CXX_SYMBOL_EXISTS):
CHECK_CXX_SYMBOL_EXISTS Macro invoked with incorrect arguments for macro named: CHECK_CXX_SYMBOL_EXISTS
Je ne me sens pas à la hauteur sur ce sujet et c'est pourquoi je suis venu ici. Je veux bien faire des efforts supplémentaires pour en savoir plus, mais je ne sais plus où chercher. Toute aide serait appréciée !
EDIT 1
Merci pour les réponses reçues jusqu'à présent ! J'ai fait Option 3 sur la base de vos commentaires :
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)
Malheureusement, cela ne résout pas mon problème. Il émet toujours une erreur lors de la compilation en indiquant qu'il ne trouve pas l'en-tête de compilation.
EDIT 2
Merci pour toutes les réponses apportées jusqu'à présent. Elles sont toutes utiles. J'ai essayé la réponse d'Ashkan en dernier (parce qu'elle semblait intimidante). Celle-ci renvoie
Le compilateur ne dispose pas des capacités du système de fichiers.
Je suppose donc qu'il y a un problème de ce côté-là. C'est utile dans le sens où je sais maintenant que ce n'est probablement pas dû à mon fichier CMake. Je dois maintenant trouver pourquoi le compilateur supporte l'en-tête du système de fichiers...
EDIT 3
Strictement parlant, la réponse à cette question est donnée car ma question concerne le fichier CMake. Je vais marquer la réponse d'Ashkan comme étant la solution simplement parce qu'elle a produit l'étape suivante dans ma recherche de dépannage. Si je pouvais, je marquerais aussi la réponse de lubgr parce que je pense que c'est aussi une très bonne réponse. Merci à tous !