Cmake compilación con bibliotecas externas.
Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown.
Soy principiante en la construcción de ARM.
Quiero compilar este código para la plataforma ARMEL.
Tengo un código:
# include <boost container/flat_map.hpp="">
# include <boost container/flat_set.hpp="">
# include <nlohmann json.hpp="">
int main()
{
return 0;
}
También tengo un archivo CMake:
CMake_minimum_required(VERSION 2.8.10 FATAL_ERROR)
project(test CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_COMPILER arm-linux-gnueabi-g++-10)
set(SRC_FILES test.cpp)
add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY)
add_definitions(-DBOOST_SYSTEM_NO_DEPRECATED)
add_definitions(-DBOOST_ALL_NO_LIB)
add_definitions(-DBOOST_NO_RTTI)
add_definitions(-DBOOST_NO_TYPEID)
add_definitions(-DBOOST_ASIO_DISABLE_THREADS)
add_executable(${PROJECT_NAME} ${SRC_FILES})
Instalé la biblioteca nlohmann en:
/usr/local/include/nlohmann/json.hpp
Después de generar make y make:
/home/test-machine/project-dir/test/test.cpp:3:10:error fatal: nlohmann/json.hpp: No existe tal archivo o directorio
3 | #include
| ^~~~~~~~~~~~~~~~~~~
compilación terminada.
make[2]: *** [CMakeFiles/test.dir/build.make:82: CMakeFiles/test.dir/test.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:95: CMakeFiles/test.dir/all] Error 2
make: *** [Makefile:103: all] Error 2
¿Por qué tengo este error? ¡¡¡Ayúdame, por favor!!!
davy.ai
El error está ocurriendo porque el compilador no puede encontrar el archivo de encabezado de la biblioteca nlohmann, que ha sido instalada en el directorio /usr/local/include/nlohmann/json.hpp.
Para resolver este error, es necesario incluir la ruta al archivo de encabezado en el archivo CMakeLists.txt. Puedes hacer esto agregando las siguientes líneas a tu archivo CMakeLists.txt antes del comando add_executable():
Esto le indicará a CMake dónde buscar los archivos de encabezado.
Después de realizar este cambio, regenera tus archivos make y compila nuevamente. El error debería estar resuelto ahora.