Questions tagged «cmake»

CMake是一个跨平台的开源构建系统生成器。它生成用于构建系统的文件,例如用于多个集成开发环境的本机makefile,ninja-build和项目文件。

1
在Windows中配置CMake以使用命令行中的clang获得最新的OpenMP支持
我有一个使用OpenMP进行并行化的小型测试项目。我的目标是对其进行编译,以使其生成.dll并.lib用于库(因为我的真实项目链接到使用这些类型分发的外部库),并且支持OpenMP 4.5或更高版本,并且可以从命令行进行操作,因此可以在docker上完成测试和检查(泊坞窗部分不在此问题的范围内,仅供参考,以说明为什么我需要它在命令行中工作)。我可以使用不满意的其他编译器来编译该项目: MSVC:,mkdir build-msvc然后cmake ..(从新创建的文件夹中),最后是cmake --build . --config Release。这可以很好地编译,但是仅支持OpenMP 2.0,因此对于我的真实项目不是一个好的选择。 Intel Parallel Studio:,mkdir build-intel然后cmake .. -T "Intel C++ Compiler 19.0"(从新创建的文件夹中),最后是cmake --build . --config Release。它支持OpenMP 5.0,但其许可证对我而言却相当昂贵。 MinGW x64 g ++:,mkdir build-g++然后cmake .. -G "MinGW Makefiles"(从新创建的文件夹中),最后是cmake --build .。它支持OpenMP 4.5,但该编译器与.lib(据我所知)与我已经提到的对我而言是不兼容的。 我尝试使用clang没有成功: 然后从MSVC中进行CLANG:,mkdir build-clang-msvc然后cmake -G Ninja -DCMAKE_CXX_COMPILER=clang-cl ..(从新创建的文件夹中),但失败并显示以下错误: -CXX编译器标识是Clang 8.0.1,带有类似MSVC的命令行 -检查工作的CXX编译器:C:/ Program Files(x86)/ Microsoft …

1
CMake:如何分辨传递依赖从何而来?
我正在重写旧的CMake设置以使用自动依赖项传播等现代功能。(即使用target_include_directories(<target> PUBLIC <dir>)代替include_directories(<dir>)。)当前,我们通过设置一堆全局目录属性来手动处理所有项目依赖项信息。 在测试中,我找到了一些示例,其中新版本中的目标将链接到旧版本中不会的库。我没有明确地链接到它,所以我知道这是来自目标的依赖关系,但是为了找到哪个(一个或多个)我必须递归地浏览项目的所有CMakeLists.txt依赖关系,跟踪依赖关系层次结构,直到找到一个引入相关库的库。我们有数十个库,因此这不是一个简单的过程。 CMake是否提供任何方式查看每个目标的显式添加了哪些依赖关系,以及通过传递性依赖关系传播了哪些依赖关系? 看起来--graphviz输出确实显示了这种区别,因此很明显CMake内部知道上下文。但是,我想编写一个类似tree脚本来在命令行上显示依赖项信息,而解析Graphviz文件听起来既像噩梦,也像黑客一样。 据我所知,cmake-file-api并没有包含此信息。我认为该codemodel/target/dependencies字段可能有效,但是它列出了混合在一起的本地和可传递依赖项。并且backtrace每个依赖项的字段仅关系到当前目标的add_executable/ add_library调用。
10 cmake 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.