首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CMake将open62541库构建为外部库

使用CMake将open62541库构建为外部库
EN

Stack Overflow用户
提问于 2019-01-15 14:04:44
回答 2查看 776关注 0票数 0

我想在Visual Studio中使用CMake将open62541库包含到我现有的C++项目中。open62541本身使用CMake作为构建工具。项目结构:

代码语言:javascript
复制
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做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-16 15:19:50

感谢@Stefan Profanter给我指明了正确的方向。这是当前工作的CMakeLists.txt:

代码语言:javascript
复制
# 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中的引用:

代码语言:javascript
复制
#include "open62541.h"
票数 1
EN

Stack Overflow用户

发布于 2019-01-15 14:37:45

您可以简单地将open62541的子目录添加到您的主CMake中,并在此之前设置相应的CMake选项。然后还要将open62541目标添加到您自己的目标中,并添加合并后的源文件。

例如,要启用合并:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54193481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档