Мой проект содержит подпроект spu-api
. При сборке возникает ошибка:
/home/kiryanenko/clion-2019.1.2/bin/cmake/linux/bin/cmake --build /home/kiryanenko/Projects/graph-api/cmake-build-debug --target graph_api -- -j 2
[ 16%] Linking C++ static library libspu-api.a
[ 16%] Built target spu-api
[100%] Built target graph_api
Build finished
/home/kiryanenko/clion-2019.1.2/bin/cmake/linux/bin/cmake --build /home/kiryanenko/Projects/graph-api/cmake-build-debug --target main -- -j 2
[ 12%] Linking C++ static library libspu-api.a
[ 12%] Built target spu-api
[ 75%] Built target graph_api
make[3]: *** Нет правила для сборки цели «spu-api/libspu-api.a», требуемой для «main». Останов.
CMakeFiles/Makefile2:110: recipe for target 'CMakeFiles/main.dir/all' failed
make[2]: *** [CMakeFiles/main.dir/all] Error 2
CMakeFiles/Makefile2:122: recipe for target 'CMakeFiles/main.dir/rule' failed
make[1]: *** [CMakeFiles/main.dir/rule] Error 2
Makefile:131: recipe for target 'main' failed
make: *** [main] Error 2
Вот структура проекта:
├── spu-api
│ ├── CMakeLists.txt
│ ├── cp_images_to_srv.sh
│ ├── help_srv.sh
│ ├── libspu
│ │ ├── base_structure.hpp
│ │ ├── data_container_operators.hpp
│ │ ├── errors
│ │ │ ├── could_not_create_structure.hpp
│ │ │ └── did_not_found_by_name.hpp
│ │ ├── fields_containers.hpp
│ │ ├── fields.hpp
│ │ ├── fileops.hpp
│ │ ├── libspu.hpp
│ │ ├── spu.h
│ │ └── structure.hpp
│ ├── spu.h
├── BaseGraph.cpp
├── BaseGraph.h
├── CMakeLists.txt
├── Edge.cpp
├── Edge.h
├── exceptions.h
├── main.cpp
├── Node.cpp
├── Node.h
├── SpuUltraGraph.cpp
├── SpuUltraGraph.h
└── types.h
Корневой файл /CMakeLists.txt
cmake_minimum_required(VERSION 3.14)
project(graph_api)
set(CMAKE_CXX_STANDARD 14)
set(SPU_ARCH 64)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS} -DSPU${SPU_ARCH}")
include_directories(spu-api)
add_subdirectory(spu-api)
add_library(
graph_api STATIC
BaseGraph.cpp
BaseGraph.h
Node.cpp
Node.h
Edge.cpp
Edge.h
exceptions.h
types.h
SpuUltraGraph.cpp
SpuUltraGraph.h
)
target_link_libraries(graph_api spu-api)
set(SOURCE_EXE main.cpp)
add_executable(main ${SOURCE_EXE})
target_link_libraries(main graph_api)
Файл подпроекта /spu-api/CMakeLists.txt
cmake_minimum_required(VERSION 3.14)
project(spu-api)
set(CMAKE_CXX_STANDARD 14)
add_library(
spu-api STATIC
spu.h
libspu/spu.h
libspu/base_structure.hpp
libspu/data_container_operators.hpp
libspu/fields.hpp
libspu/fields_containers.hpp
libspu/fileops.hpp
libspu/libspu.hpp
libspu/structure.hpp
libspu/errors/could_not_create_structure.hpp
libspu/errors/did_not_found_by_name.hpp
)
SET_TARGET_PROPERTIES(spu-api PROPERTIES LINKER_LANGUAGE C++)
В чем может быть причина?
Если это header-only библиотека, то никакого объектного кода библиотеки в виде .a или .lib Вы не получите. Чтобы все заработало, рекомендую Вам удалить из корневого /CMakeLists.txt
строчки:
add_subdirectory(spu-api)
и
target_link_libraries(graph_api spu-api)
а также файл подпроекта /spu-api/CMakeLists.txt
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Мое приложение шарит часть рабочего стола с окном какого-либо приложенияКогда эту шару кто-то просматривает, то на машине, на которой запущено...
Вот задание: Дан массив из N целых чиселНайти среднее арифметическое элементов массива, кратных числу k
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском