Вышло очень элегантное решение
jq 'with_entries(.value |= .ip)'
Какой из них
{
"host1": "10.1.2.3",
"host2": "10.1.2.2",
"host3": "10.1.18.1"
}
Вот фрагмент jqplay для воспроизведения с помощью: https://jqplay.org/ s / Jb_fnBveMQ
Функция with_entries
преобразует каждый объект в список объектов в Key / Value-pair, поэтому мы можем получить доступ к .key
или .value
соответственно, мы обновление (переписывание) каждого KV-элемента .value
с полем .ip
с помощью оператора |=
обновления |=
find_package(OpenGL)
найдет для вас пакет, но он не свяжет пакет с целью.
Для связи с библиотекой вы можете использовать target_link_libraries(<target> <item>)
. Кроме того, вам также нужно установить include directory
, чтобы компоновщик знал, где искать вещи. Это делается с помощью include_directories
.
Пример CMakeLists.txt
, который будет делать это, выглядит примерно так:
cmake_minimum_required(VERSION 2.8)
project(testas)
add_executable(testas main.cpp)
find_package(OpenGL REQUIRED)
find_package(GLUT REQUIRED)
include_directories( ${OPENGL_INCLUDE_DIRS} ${GLUT_INCLUDE_DIRS} )
target_link_libraries(testas ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} )
Если OpenGL
является необходимостью для вашего проекта, вы можете рассмотреть либо тестирование OpenGL_FOUND
после find_package(OpenGL)
или с помощью REQUIRED
, который остановит cmake
, если OpenGL
не будет найден.
Для получения дополнительной информации и лучших примеров:
В частности, ссылки CMake wiki
и cmake and opengl
должны дать вам достаточно, чтобы заставить работать ,
Я использую эти два файла cmake для создания моих проектов OpenGL, и все они работают хорошо.
Во-первых, основной CMakeLists.txt
blockquote>cmake_minimum_required(VERSION 3.1.0) project(project_name) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/") find_package(OpenGL REQUIRED) find_package(FREEGLUT REQUIRED) find_package(GLEW REQUIRED) if(NOT ${OPENGL_FOUND}) message("OPENGL not found") endif() include_directories( ${PROJECT_SOURCE_DIR} ${FREEGLUT_INCLUDE_DIR} ${GLEW_INCLUDE_DIR} ${OPENGL_INCLUDE_DIR} ) message(${OPENGL_INCLUDE_DIR}) add_executable(${PROJECT_NAME} ${PROJECT_SOURCE_DIR}/filename.cpp) target_link_libraries(${PROJECT_NAME} ${OPENGL_LIBRARY} ${FREEGLUT_LIBRARY} ${GLEW_LIBRARY} )
Во-вторых, файл cmake find GLUT в каталоге CMakeModules
blockquote># Try to find the FREEGLUT library # # FREEGLUT_INCLUDE_DIR # FREEGLUT_LIBRARY # FREEGLUT_FOUND FIND_PATH( FREEGLUT_INCLUDE_DIR GL/freeglut.h GL/gl.h GL/glu.h GL/glew.h ${CMAKE_INCLUDE_PATH} $ENV{include} ${OPENGL_INCLUDE_DIR} /usr/include /usr/local/include ) SET(STORE_CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK}) SET(CMAKE_FIND_FRAMEWORK NEVER) FIND_LIBRARY( FREEGLUT_LIBRARY NAMES freeglut_static freeglut glut GL PATH /opt/local/lib ${CMAKE_LIBRARY_PATH} $ENV{lib} /usr/lib /usr/local/lib ) SET(CMAKE_FIND_FRAMEWORK ${STORE_CMAKE_FIND_FRAMEWORK}) IF (FREEGLUT_INCLUDE_DIR AND FREEGLUT_LIBRARY) SET(FREEGLUT_FOUND TRUE) ENDIF (FREEGLUT_INCLUDE_DIR AND FREEGLUT_LIBRARY) IF (FREEGLUT_FOUND) IF (NOT FREEGLUT_FIND_QUIETLY) MESSAGE(STATUS "Found FREEGLUT: ${FREEGLUT_LIBRARY}") ENDIF (NOT FREEGLUT_FIND_QUIETLY) ELSE (FREEGLUT_FOUND) IF (FREEGLUT_FIND_REQUIRED) MESSAGE(FATAL_ERROR "Could not find FREEGLUT") ENDIF (FREEGLUT_FIND_REQUIRED) ENDIF (FREEGLUT_FOUND)