c++项目之使用CMakeLists.txt进行项目内的分层结构

前言

一个项目,无论怎么看,里面都有需要有多个package的。

近日在看基础c++入门的时候没有提到这些。。嗯,不能忍,于是看了写资料,然后实际进行操作。

 

这次要在一个练习用项目下面分出两个层,model模型层以及biz业务逻辑层。

 

建立模型层

首先请在项目根目录下面添加文件夹,叫 model:

屏幕截图_298.png

 

然后在model文件夹下面添加CMakeLists.txt文件,里面的内容如下:

SET(SOURCE_FILES
t1.cpp
t2.cpp
)

#INCLUDE_DIRECTORIES(
#/usr/local/include
#${PROJECT_SOURCE_DIR}/utility
#${PROJECT_SOURCE_DIR}/association
#)

LINK_LIBRARIES(
/usr/local/lib
${PROJECT_SOURCE_DIR}/lib
)

ADD_EXECUTABLE(model  ${SOURCE_FILES})
TARGET_LINK_LIBRARIES(model
#utility
)

SET_TARGET_PROPERTIES(model  PROPERTIES    #表示生成的执行文件所在路径
RUNTIME_OUTPUT_DIRECTORY  "${PROJECT_SOURCE_DIR}/bin")

 

解释一下:

    0.SOURCE_FILES 表示设置了一个参数,跟下面的add_executable联合使用指定生成的执行文件,

 t1.cpp以及t2.cpp是我随便建立的cpp文件---注意,指定了生成哪个执行文件就必须要有那个文件,

所以请自行建立t1,t2.

     1. ADD_EXECUTABLE()     #指定要生成的执行文件的名称model

   

     2. SET_TARGET_PROPERTIES

      设置生成的执行文件存放的路径,

      注意:


      TARGET_LINK_LIBRARIES(model   xxxxx)是用来指定 需要依赖的项目内其他同级子目录,但model独立的,所以这里不用填

 

    

然后子目录 model可以看到结构为:

屏幕截图_299.png

 

好了,在qt creator里面的根CMakeLists.txt注册子目录:

add_subdirectory(model)

则:

屏幕截图_300.png

 

然后编译过后可以看到项目的目录里面有了model这个子目录了:

屏幕截图_301.png

 

添加biz子目录且引用model

步骤差不多跟model的建立一样,不用的是要引用model。

如下:

屏幕截图_302.png

 

CMakeLists.txt

SET(SOURCE_FILES
biz01.cpp
biz02.cpp
)

INCLUDE_DIRECTORIES(
#/usr/local/include
#${PROJECT_SOURCE_DIR}/utility
#${PROJECT_SOURCE_DIR}/model
)

LINK_LIBRARIES(
/usr/local/lib
${PROJECT_SOURCE_DIR}/lib
)

ADD_EXECUTABLE(biz  ${SOURCE_FILES})
TARGET_LINK_LIBRARIES(biz
model
)

SET_TARGET_PROPERTIES(biz  PROPERTIES    #表示生成的执行文件所在路径
RUNTIME_OUTPUT_DIRECTORY  "${PROJECT_SOURCE_DIR}/bin")

 

注册到根目录的CMakeLists.txt

屏幕截图_303.png

必须注意!!!

如果biz引用了model,那么 add_subdirectory的时候biz就放到model的前面,这个顺序不能倒过来,否则会报错的!!

最后看看qt里面的项目结构:

屏幕截图_304.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值