我需要在我的项目中添加一个"experimental/filesystem"标题
#include <experimental/filesystem>
int main() {
auto path = std::experimental::filesystem::current_path();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
所以我使用-lstdc ++ fs flag并与libstdc ++ fs.a链接
cmake_minimum_required(VERSION 3.7)
project(testcpp)
set(CMAKE_CXX_FLAGS "-std=c++14 -lstdc++fs" )
set(SOURCE_FILES main.cpp)
target_link_libraries(${PROJECT_NAME} /usr/lib/gcc/x86_64-linux-gnu/7/libstdc++fs.a)
add_executable(testcpp ${SOURCE_FILES})
Run Code Online (Sandbox Code Playgroud)
但是,我有下一个错误:
CMakeLists.txt上的CMake错误:9(target_link_libraries):无法为目标"testcpp"指定链接库,该链接库不是
由此项目构建的.
但如果我直接编译,它就可以了:
g++-7 -std=c++14 -lstdc++fs -c main.cpp -o main.o
g++-7 -o main main.o /usr/lib/gcc/x86_64-linux-gnu/7/libstdc++fs.a
Run Code Online (Sandbox Code Playgroud)
我的错误在哪里?
Flo*_*ian 16
只是target_link_libraries()呼叫必须在add_executable()呼叫之后发出.否则testcpp目标尚未知晓.CMake按顺序解析所有内容.
所以只是为了完整性,这是我测试的示例的工作版本:
cmake_minimum_required(VERSION 3.7)
project(testcpp)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# NOTE: The following would add library with absolute path
# Which is bad for your projects cross-platform capabilities
# Just let the linker search for it
#add_library(stdc++fs UNKNOWN IMPORTED)
#set_property(TARGET stdc++fs PROPERTY IMPORTED_LOCATION "/usr/lib/gcc/x86_64-linux-gnu/7/libstdc++fs.a")
set(SOURCE_FILES main.cpp)
add_executable(testcpp ${SOURCE_FILES})
target_link_libraries(${PROJECT_NAME} stdc++fs)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9559 次 |
| 最近记录: |