我需要在我的项目中添加一个“试验性/文件系统”头
#include <experimental/filesystem>
int main() {
auto path = std::experimental::filesystem::current_path();
return 0;
}因此,我使用了-lstdc++fs标志并与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})但是,我有下一个错误:
CMake CMakeLists.txt: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我的错误在哪里?
发布于 2017-06-10 19:27:55
只是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)https://stackoverflow.com/questions/44476810
复制相似问题