[英]Build open62541 library as external library with CMake
我想将open62541库包含在使用CMake的Visual Studio中的现有C ++项目中。 open62541本身使用CMake作为构建工具。 项目结构:
MyOPC
│ CMakeLists.txt
│ MyOPC.cpp
│ MyOPC.h
├───.vs
└───open62541
│ CMakeLists.txt
├───arch
│ │ CMakeLists.txt
├───deps
├───doc
├───examples
├───include
├───plugins
├───src
├───tests
└───tools
我想用我的项目构建open62541,以便它将生成open62541.h文件。 如何使用CMake做到这一点?
您可以简单地将open62541的子目录添加到主CMake中,然后再设置相应的CMake选项。 然后还将open62541目标添加到您自己的目标中,并添加合并后的源文件。
例如,启用合并:
set(UA_ENABLE_AMALGAMATION ON CACHE BOOL "" FORCE)
set(UA_LOGLEVEL 300)
add_subdirectory(open62541)
add_dependencies(${PROJECT_NAME} open62541 open62541-amalgamation-source open62541-amalgamation-header)
set (${PROJECT_NAME}_SRCS ${${PROJECT_NAME}_SRCS} "${PROJECT_BINARY_DIR}/open62541/open62541.c")
确保将_SRCS添加到自己的目标源中。
类似的操作在这里完成: https : //github.com/Pro/open62541-arduino
感谢@Stefan Profanter使我朝着正确的方向前进。 这是当前正在工作的CMakeLists.txt:
# CMakeList.txt : Top-level CMake project file, do global configuration
# and include sub-projects here.
#
cmake_minimum_required (VERSION 3.8)
project ("MyOPC")
add_executable (${PROJECT_NAME} "MyOPC.cpp" "MyOPC.h")
# -----------------------------------
# open62541 specific settings - BEGIN
# -----------------------------------
set(UA_ENABLE_AMALGAMATION ON CACHE BOOL "" FORCE)
set(UA_LOGLEVEL 300)
add_subdirectory ("open62541")
set_source_files_properties("${PROJECT_BINARY_DIR}/open62541/open62541.c" PROPERTIES GENERATED TRUE)
set(${PROJECT_NAME}_SRCS ${${PROJECT_NAME}_SRCS} "${PROJECT_BINARY_DIR}/open62541/open62541.c")
include_directories("${PROJECT_BINARY_DIR}/open62541/")
# -----------------------------------
# open62541 specific settings - END
# -----------------------------------
add_dependencies(${PROJECT_NAME} open62541 open62541-amalgamation-source open62541-amalgamation-header)
target_link_libraries(${PROJECT_NAME} open62541)
头文件MyOPC.h中的引用:
#include "open62541.h"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.