summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKieran Bingham <kieran.bingham@ideasonboard.com>2022-08-09 13:02:55 +0100
committerKieran Bingham <kieran.bingham@ideasonboard.com>2022-08-09 15:22:02 +0100
commitc4a341aa444f2488557a3346924c2eb090dfc07c (patch)
tree62a108ec3ca173651a6e0c216d110c6d12726f4c
parentd1f034055fbb433d155db147752e09580451df04 (diff)
cmake: Provide a sample CMakeLists.txtHEADmaster
While libcamera uses meson as its build infrastructure, applications are free to use other make systems. CMake is widely used, so add an example CMakeLists.txt to support building simple-cam and linking against libcamera using cmake. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
-rw-r--r--CMakeLists.txt32
1 files changed, 32 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..2a86b55
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,32 @@
+cmake_minimum_required(VERSION 3.6)
+
+project(SimpleCam
+ DESCRIPTION "A small and documented example application for libcamera"
+ LANGUAGES CXX)
+
+set (CMAKE_CXX_STANDARD 17)
+
+set (CMAKE_CXX_FLAGS "-Wall -Winvalid-pch -Wnon-virtual-dtor -Wextra -Werror -Wno-unused-parameter")
+
+find_package(PkgConfig)
+
+pkg_check_modules(LIBCAMERA REQUIRED IMPORTED_TARGET libcamera)
+message(STATUS "libcamera library found:")
+message(STATUS " version: ${LIBCAMERA_VERSION}")
+message(STATUS " libraries: ${LIBCAMERA_LINK_LIBRARIES}")
+message(STATUS " include path: ${LIBCAMERA_INCLUDE_DIRS}")
+
+# libevent is used specifically by simple-cam as its event loop.
+# Applications may use a different event handling implementation.
+pkg_check_modules(LIBEVENT REQUIRED IMPORTED_TARGET libevent_pthreads)
+message(STATUS "libevent_pthreads library found:")
+message(STATUS " version: ${LIBEVENT_VERSION}")
+message(STATUS " libraries: ${LIBEVENT_LINK_LIBRARIES}")
+message(STATUS " include path: ${LIBEVENT_INCLUDE_DIRS}")
+
+include_directories(${CMAKE_SOURCE_DIR} ${LIBCAMERA_INCLUDE_DIRS} ${LIBEVENT_INCLUDE_DIRS})
+
+add_executable(simple-cam simple-cam.cpp event_loop.cpp)
+
+target_link_libraries(simple-cam PkgConfig::LIBEVENT)
+target_link_libraries(simple-cam PkgConfig::LIBCAMERA)