Loading CMakeLists.txt +39 −3 Original line number Diff line number Diff line cmake_minimum_required(VERSION 3.20) if (NOT UNIX) message(FATAL_ERROR "This project only supports Unix-like systems.") endif() option(BUILD_TESTS "Build the tests" ON) project(mcp2221a LANGUAGES C CXX) set(CMAKE_CXX_STANDARD_REQUIRED 20) set(CMAKE_CXX_STANDARD_REQUIRED 11) include(ExternalProject) include_directories(lib) set(EXTERNAL_DIR ${CMAKE_BINARY_DIR}/external) ExternalProject_Add( i2c_tools GIT_REPOSITORY https://git.kernel.org/pub/scm/utils/i2c-tools/i2c-tools.git GIT_TAG v4.4 PREFIX ${EXTERNAL_DIR}/i2c-tools BINARY_DIR ${EXTERNAL_DIR}/i2c-tools/src/i2c_tools CONFIGURE_COMMAND "" BUILD_COMMAND make BUILD_STATIC_LIB=1 -j4 INSTALL_COMMAND "" ) # Get build directory of i2c-tools ExternalProject_Get_Property(i2c_tools BINARY_DIR) message(STATUS "i2c-tools build directory: ${BINARY_DIR}") set(I2C_LIB_PATH ${BINARY_DIR}/lib/libi2c.a) set(I2C_INCLUDE_DIR ${EXTERNAL_DIR}/i2c-tools/src/i2c_tools/include) # Create an imported target add_library(i2c STATIC IMPORTED) set_target_properties(i2c PROPERTIES IMPORTED_LOCATION ${I2C_LIB_PATH} INTERFACE_INCLUDE_DIRECTORIES ${I2C_INCLUDE_DIR} ) add_dependencies(i2c i2c_tools) include_directories(lib) add_subdirectory(lib) if (BUILD_TESTS) add_subdirectory(tests) endif() No newline at end of file CMakePresets.json 0 → 100644 +15 −0 Original line number Diff line number Diff line { "version": 2, "configurePresets": [ { "name": "default", "binaryDir": "${sourceDir}/build", "generator": "Unix Makefiles", "cacheVariables": { "CMAKE_EXPORT_COMPILE_COMMANDS": "ON", "CMAKE_BUILD_TYPE": "Release", "CMAKE_CXX_STANDARD": "20" } } ] } No newline at end of file README.md +2 −3 Original line number Diff line number Diff line Loading @@ -40,9 +40,8 @@ sudo apt install -y libi2c-dev Standard **CMAKE**: ```bash mkdir build && cd build cmake .. make cmake --preset default cmake --build build/ ``` ## Try it out Loading lib/mcp2221a.h +1 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ #include <stdexcept> #include <vector> #include <cstdint> #include <string> #define MCP2221_NAME "MCP2221 USB-I2C/UART Combo" Loading tests/CMakeLists.txt +4 −1 Original line number Diff line number Diff line Loading @@ -7,3 +7,6 @@ target_link_libraries(${PROJECT_NAME} mcp2221a) add_executable(main main.cpp) target_link_libraries(main mcp2221a) add_executable(i2c_scan scan.cpp) target_link_libraries(i2c_scan mcp2221a) No newline at end of file Loading
CMakeLists.txt +39 −3 Original line number Diff line number Diff line cmake_minimum_required(VERSION 3.20) if (NOT UNIX) message(FATAL_ERROR "This project only supports Unix-like systems.") endif() option(BUILD_TESTS "Build the tests" ON) project(mcp2221a LANGUAGES C CXX) set(CMAKE_CXX_STANDARD_REQUIRED 20) set(CMAKE_CXX_STANDARD_REQUIRED 11) include(ExternalProject) include_directories(lib) set(EXTERNAL_DIR ${CMAKE_BINARY_DIR}/external) ExternalProject_Add( i2c_tools GIT_REPOSITORY https://git.kernel.org/pub/scm/utils/i2c-tools/i2c-tools.git GIT_TAG v4.4 PREFIX ${EXTERNAL_DIR}/i2c-tools BINARY_DIR ${EXTERNAL_DIR}/i2c-tools/src/i2c_tools CONFIGURE_COMMAND "" BUILD_COMMAND make BUILD_STATIC_LIB=1 -j4 INSTALL_COMMAND "" ) # Get build directory of i2c-tools ExternalProject_Get_Property(i2c_tools BINARY_DIR) message(STATUS "i2c-tools build directory: ${BINARY_DIR}") set(I2C_LIB_PATH ${BINARY_DIR}/lib/libi2c.a) set(I2C_INCLUDE_DIR ${EXTERNAL_DIR}/i2c-tools/src/i2c_tools/include) # Create an imported target add_library(i2c STATIC IMPORTED) set_target_properties(i2c PROPERTIES IMPORTED_LOCATION ${I2C_LIB_PATH} INTERFACE_INCLUDE_DIRECTORIES ${I2C_INCLUDE_DIR} ) add_dependencies(i2c i2c_tools) include_directories(lib) add_subdirectory(lib) if (BUILD_TESTS) add_subdirectory(tests) endif() No newline at end of file
CMakePresets.json 0 → 100644 +15 −0 Original line number Diff line number Diff line { "version": 2, "configurePresets": [ { "name": "default", "binaryDir": "${sourceDir}/build", "generator": "Unix Makefiles", "cacheVariables": { "CMAKE_EXPORT_COMPILE_COMMANDS": "ON", "CMAKE_BUILD_TYPE": "Release", "CMAKE_CXX_STANDARD": "20" } } ] } No newline at end of file
README.md +2 −3 Original line number Diff line number Diff line Loading @@ -40,9 +40,8 @@ sudo apt install -y libi2c-dev Standard **CMAKE**: ```bash mkdir build && cd build cmake .. make cmake --preset default cmake --build build/ ``` ## Try it out Loading
lib/mcp2221a.h +1 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ #include <stdexcept> #include <vector> #include <cstdint> #include <string> #define MCP2221_NAME "MCP2221 USB-I2C/UART Combo" Loading
tests/CMakeLists.txt +4 −1 Original line number Diff line number Diff line Loading @@ -7,3 +7,6 @@ target_link_libraries(${PROJECT_NAME} mcp2221a) add_executable(main main.cpp) target_link_libraries(main mcp2221a) add_executable(i2c_scan scan.cpp) target_link_libraries(i2c_scan mcp2221a) No newline at end of file