相关疑难解决方法(0)

在CMake中使用GLOB或每个文件单独指定源文件是否更好?

CMake提供了几种指定目标源文件的方法.一种是使用globbing(文档),例如:

FILE(GLOB MY_SRCS dir/*)
Run Code Online (Sandbox Code Playgroud)

另一个是单独指定每个文件.

哪种方式更喜欢?Globbing似乎很容易,但我听说它有一些缺点.

cmake

145
推荐指数
4
解决办法
7万
查看次数

设置和使用变量的CMake语法是什么?

我问这个是下次我使用CMake的时候提醒自己的.它永远不会坚持,谷歌的结果也不是很好.

在CMake中设置和使用变量的语法是什么?

cmake

143
推荐指数
3
解决办法
11万
查看次数

CMake究竟是如何运作的?

我不是只问自己这个问题.我希望这个问题可以作为许多喜欢我的新手的参考,发现它对于这样一个小CMakeLists.txt文件 后幕后到底发生了什么感到非常困惑.

cmake_minimum_required (VERSION 2.6)
project(Tutorial)
add_executable(Tutorial tutorial.cpp)
Run Code Online (Sandbox Code Playgroud)

这么小 tutorial.cpp

int main() { return 0; } 
Run Code Online (Sandbox Code Playgroud)

生成的文件太多了

CMakeCache.txt  cmake_install.cmake  Makefile
CMakeLists.txt  tutorial.cpp
Run Code Online (Sandbox Code Playgroud)

和一个CMakeFiles包含这么多文件和文件夹的文件夹

CMakeCCompiler.cmake               CMakeOutput.log    Makefile.cmake
cmake.check_cache                  CMakeSystem.cmake  progress.marks
CMakeCXXCompiler.cmake             CMakeTmp           TargetDirectories.txt
CMakeDetermineCompilerABI_C.bin    CompilerIdC        Tutorial.dir
CMakeDetermineCompilerABI_CXX.bin  CompilerIdCXX
CMakeDirectoryInformation.cmake    Makefile2
Run Code Online (Sandbox Code Playgroud)

不了解幕后发生的事情(即:为什么文件必须生成以及它们的目的是什么),是能够学习CMake的最大障碍.

如果有人知道,你可以为了后代而解释它吗?这些文件的目的是什么,当我输入时cmake .,在构建项目之前cmake配置和生成究竟是什么?

cmake

137
推荐指数
2
解决办法
5万
查看次数

如何用linux中的CMake和Kdevelop编译GLUT + OpenGL项目?

正如标题所说,我似乎无法使用OpenGL和Glut构建项目.

我得到OpenGL函数的Undefined引用错误.

我试过做:

project(testas)
find_package(OpenGL)
find_package(GLUT)
add_executable(testas main.cpp)
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

有什么建议?

linux opengl cmake

36
推荐指数
3
解决办法
5万
查看次数

CMake的新人想知道什么是尘土飞扬的角落?

我做了很多项目和很多不同的构建系统和CI工具.最近,我接触到了一个偶然的挑战性任务,即为一个合理大小的C++应用程序添加基于autotools的环境.虽然我喜欢最终用户的易用性,但我并不喜欢处理m4和开发人员方面的所有auto*工具.

我在业余时间做了一个相当大的辅助项目,并且决定我想把CMake用于试驾.由于我刚刚开始,我显然正在计划挖掘文档,常见问题解答,维基等,并边做边学.顺便说一下,我为"Mastering CMake"这本书付钱,但我在亚马逊上发现的评论足以让我觉得它可能不值钱.所有这一切,在任何新的东西中都经常会出现"陷阱",新人经常会偶然发现旧的专业人士早已学会避免.我想知道那些基于人们对CMake的经验是什么,我希望通过在这里询问来减少我的学习痛苦.

我应该指出,我计划主要在Linux上构建,以及其他UN*X变体.Windows并不是我的POV真正关心的问题.这是一个大型服务器端应用程序,具有用于操作员的Web和CLI界面,用于自动化/与OSS工具集成的北向REST接口,以及用于CPE的SOAP南向接口.我将需要很多第三方库和应用程序来实现这一切,除非我想在未来10年内手动构建这一切.:)

build-process build cmake

15
推荐指数
2
解决办法
4139
查看次数

了解CMake,make和GCC的角色

1. cmake是来自CMake软件的命令:为构建自动化系统做准备; make和make install是来自Make software:build automation system的命令.

2.从阅读这个帖子,我的理解是:

一个.这个"cmake和make"的东西实际上在其实现中使用g ++/gcc.cmake和make stuffs基本上只是使用g ++/gcc的工具.那是对的吗?

gcc/g ++是执行实际工作的编译器.

C.所以我可以直接使用gcc/g ++而不使用make和CMake的东西?

3. 根据此stackoverflow 答案:CMake获取CMakeList.txt文件,并将其输出为特定于平台的构建格式,例如Makefile,Visual Studio等.

但是当我遇到这个 openCV安装时:

mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
Run Code Online (Sandbox Code Playgroud)

它在没有CMakeLists.txt文件的目录中执行cmake命令.你能解释一下这个吗?

4,我已经看到通常的步骤是:cmake,make,sudo make install.我读了这篇stackoverflow 文章,我明白了:

(i) make用于建设项目.

(ii) make install将二进制/可执行文件复制到已安装的目录.

一个.那么当我们make,结果/二进制文件/可执行文件存储在哪里?

如果我们只运行make没有make install,是否意味着没有生成文件?

C.我遇到了这个openCV 教程,关于使用openCV和GCC以及CMake.它用:

cd <DisplayImage_directory>
cmake . …
Run Code Online (Sandbox Code Playgroud)

gcc makefile cmake

14
推荐指数
1
解决办法
6373
查看次数

使用CMake将`src`目录中的源编译为`bin`目录中的二进制文件

我的项目目录在其根目录中包含一个CMakeLists.txt文件srcinclude目录.src也包含它自己的CMakeLists.txt,由根目录链接.有没有一种方法可以指定CMake设置默认的全局构建目录,以便语法src/CMakeLists.txt接近以下内容?

include_directories(include)
add_executable(first main.cpp foo.cpp)
add_executable(second bar.cpp)
Run Code Online (Sandbox Code Playgroud)

我想要构建这个目录树:

CMakeLists.txt

src/
    CMakeLists.txt
    main.cpp
    foo.cpp
    bar.cpp

include/
    ...

bin/ (or build/)
    first
    second
Run Code Online (Sandbox Code Playgroud)

cmake

1
推荐指数
1
解决办法
3126
查看次数

标签 统计

cmake ×7

build ×1

build-process ×1

gcc ×1

linux ×1

makefile ×1

opengl ×1