首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CMake基本用法

CMake基本用法
EN

Stack Overflow用户
提问于 2011-05-07 21:04:14
回答 1查看 1.4K关注 0票数 1

我正在尝试用CMake构建我的库。我在做CMakeLists.txt。

我希望能够做到以下几点:

我有一个名为

代码语言:javascript
运行
复制
include
src

然后在这些里面有Agui文件夹。在那个文件夹里是库的子文件夹。

到目前为止,我收集到的是:

我需要做:

代码语言:javascript
运行
复制
set(AGUI_SOURCES
src/Agui/Rectangle.cpp
src/Agui/xxx.cpp (and so on)
)

那么我认为有必要:

代码语言:javascript
运行
复制
include_directories(./include)

然后我就不确定了。

我知道add_library会参与其中,但我不确定如何参与。

问题是,我想创建两个选项: DLL或静态。

如果是DLL,则必须定义AGUI_BUILD_DLL。

因此,根据这些信息:

  1. 我在正确的轨道上吗?
  2. 如何创建选项
  3. 我在add_library里放了什么
  4. 如果用户需要DLL版本,如何添加预处理器AGUI_BUILD_DLL?

如果任何或所有这些都能得到回答,我将非常感激。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2011-05-08 11:52:20

  1. 也许,不知道:)
  2. 选项(AGUI_BUILD_DLL "Build“OFF)在CMakeLists.txt开始附近的某个地方。您可能希望使用ON而不是OFF -取决于是否希望DLL生成取消默认。

3,4.

代码语言:javascript
运行
复制
if(AGUI_BUILD_DLL)
  add_library(agui SHARED ${AGUI_SOURCES})
  set_target_properties(agui PROPERTIES DEFINE_SYMBOL "AGUI_BUILD_DLL")
else()
  add_library(agui STATIC ${AGUI_SOURCES})
endif()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5923997

复制
相关文章

相似问题

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