如何为模块化项目正确创建CMake文件

米特尔

假设C ++项目A是我的主程序,项目B是我的共享对象(.so)的模块。项目A包含两个项目之间通用的源和标头。项目在运行时加载模块.so文件。

项目A:

class-AI.cpp (It contains function funcA)
class-AI.h

class-AII.cpp
class-AII.h

class-AIII.cpp
class-AIII.h

main.cpp

项目B :(共享对象)

class-BI.cpp (Its inherit from class-AI)
class-BI.h

使用以下CMake文件,两个项目均成功构建。

项目CMakefile:

cmake_minimum_required(VERSION 3.6)
project(ProjectA)

set(CMAKE_CXX_STANDARD 11)

set(SOURCE_FILES
        main.cpp
        class-AI.cpp
        class-AI.h
        class-AII.cpp
        class-AII.h
        class-AIII.cpp
        class-AIII.h)

add_executable(ProjectA ${SOURCE_FILES})

set(EXECUTABLE_OUTPUT_PATH /opt/ProjectA/bin/)

项目B CMakefile:

cmake_minimum_required(VERSION 3.6)
project(ProjectB)

set(CMAKE_CXX_STANDARD 11)

set(SOURCE_FILES class-BI.cpp class-BI.h)
add_library(ProjectB SHARED ${SOURCE_FILES})    
set_target_properties(ProjectB PROPERTIES
        PREFIX ""
        LIBRARY_OUTPUT_DIRECTORY /opt/ProjectA/bin/)

但是在运行时,Project A将出现以下错误:

undefined symbol: _ZN6class-AI4funcAEv

如何使用CMake文件将依赖项正确添加到项目B并解决此错误?(实际上,我想将我的netbeans C ++项目更改为Jetbrains CLion)

米特尔

由于弗洛里安他的评论通过将以下行添加到Project A CMake文件中,我的问题得以解决:

add_library(ProjectB SHARED IMPORTED GLOBAL)
set_target_properties(ProjectB PROPERTIES IMPORTED_LOCATION "/opt/ProjectA/bin/ProjectB.so")
target_link_libraries(ProjectA ProjectB)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何为模块化C项目制作模块化Makefile?

来自分类Dev

如何为模块化Maven项目部署/获取模块版本信息?

来自分类Dev

如何保持python项目模块化?

来自分类Dev

使用<Import>难以模块化Visual Studio项目文件

来自分类Dev

如何制作和使用LinearLayout的模块化xml文件

来自分类Dev

模块化项目中的资源过滤

来自分类Dev

模块化项目的财产置换

来自分类Dev

MEAN项目的模块化

来自分类Dev

如何在 NetBeans 模块化项目中重命名模块?

来自分类Dev

如何模块化Powershell脚本

来自分类Dev

如何构建模块化应用

来自分类Dev

如何模块化角度代码?

来自分类Dev

如何构建模块化应用

来自分类Dev

如何使Java应用模块化

来自分类Dev

你如何组织在一个模块化的Java项目的测试?

来自分类Dev

如何在Typescript模块化项目中使用cropper.js?

来自分类Dev

如何使用Branching在Git中实施模块化项目开发?

来自分类Dev

如何使用 Firebase ML Kit 创建用于条码扫描的模块化类

来自分类Dev

如何使Java类在其他非模块化项目的模块外部不可见?

来自分类Dev

模块化Spring项目的体系结构

来自分类Dev

eclipse nullpointer异常,用于模块化Maven项目更新

来自分类Dev

模块化Spring项目的体系结构

来自分类常见问题

如何从文本文件中提取数字并执行模块化算术?

来自分类Dev

如何从文本文件中提取数字并执行模块化算术?

来自分类Dev

使Bash模块化

来自分类Dev

NodeJS模块化

来自分类Dev

模块化的矮人

来自分类Dev

模块化角度

来自分类Dev

模块化应用