草庐IT

language-cmake

全部标签

c++ - 如何将 valgrind 测试添加到我的 cmake "test"目标

我通过使用ninja构建来运行单元测试,然后从我的构建树中运行ninjatest:cmake-GNinja/source/treeninjaninjatest但是,要运行valgrind,我需要手动运行它:valgrindrel/path/to/test我希望valgrind在我运行ninjatest时自动运行。Accordingtothecmakedocumentation“设置[valgrind测试]非常简单”,但是当我运行时ctest-DNightlyMemoryCheck我只是得到这个错误:Cannotfindfile:/home/arman/tinman/deb/DartCo

c++ - 在 Xcode 中工作的 CMake 中启用 AddressSanitizer 的正确方法是什么

我添加了AddressSanitizer标志如下:set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-fsanitize=address")使用UnixMakefiles时,一切都可以正常构建和运行。生成Xcode项目时出现问题,它只是不想链接,因为它找不到ASan库。我已经找到了两个解决方案,但决定不使用它们,因为仅使用CMake无法实现自动化:将-Wl,-undefined,dynamic_lookup添加到链接标志中,因此它会跳过链接到动态库。直接与libclang_rt.asan_osx_dynamic.dylib链接。那么这两种方案有什么问题呢?使用

c++ - 如何将 CMake 中的 QtMain 与 Qt5 链接?

我将我的项目代码从Qt4升级到了Qt5。它使用CMake。除了一行与Qt相关的Cmake命令外,转换很顺利。我在当前文档中找不到,比如http://qt-project.org/doc/qt-5.0/qtdoc/cmake-manual.htmlhttp://qt-project.org/doc/qt-5.0/qtdoc/qtmain.html如何从CMake(使用Qt5)链接到QtMain?这是转换我的项目的唯一缺失位。有人可以向我指出一个解释这一点的文档或解释如何用Qt5做到这一点吗?我的Qt4代码工作正常,但我找不到Qt5的Cmake宏。EDIT>这是我目前拥有的CMake文件:

c++ - 如何使用 CMAKE_EXPORT_COMPILE_COMMANDS?

我一直在尝试按照此工具的帮助中的建议将clang-modernize与CMAKE_EXPORT_COMPILE_COMMANDS一起使用。使用此选项,cmake会生成一个JSON文件,其中包含编译信息,例如包含路径(seealso)。这个变量在cmake的命令行中被接受,但是cmake--help-variableCMAKE_EXPORT_COMPILE_COMMANDS不起作用(与thismailinglistposting一致)。有人知道如何使用它吗?我也可以将它与cppcheck一起使用。更多信息我在clangdeveloperforum上发现了此cmake功能并非在所有生成器上

c++ - 使用 CMAKE 调试和发布库链接 (VISUAL STUDIO)

已经有一个Thread这真的没有帮助。我希望能够链接例如Foo.lib用于Release配置和Foo_d.lib用于Debug配置,我怎样才能做到这一点?如果我这样做:target_link_libraries(MyEXEdebugFoo_d)target_link_libraries(MyEXEoptimizedFoo)那么我的项目中有两个库用于调试配置?为什么没有Release选项?非常感谢! 最佳答案 target_link_libraries需要一个列表,你不需要调用它两次。以下将起作用:target_link_librar

c++ - 将 Cmake 与 Qt Creator 一起使用

我想同时使用Qtcreator和Cmake(请不要问我的动机,接受这一点。)我成功设置Qtcreator使用cmake"Cmake":见this,this和this有关我如何做到这一点的文件。我成功创建了helloworld项目,但是我无法在项目中创建文件,仅将现有文件添加到项目树,然后将其添加到cmake列表。Qt创建者“AddNew...”的标准操作不起作用,我找不到原因。有人同时使用Qtcreator和“Cmake”吗?这种组合真的可行吗?注意:我使用的是Qtcreatorv2.4.1。 最佳答案 您可以在CMakeLists

c++ - 从命令行调用时将包含目录添加到 CMake

我现在不应该打扰现有的CMakeLists.txt文件,但我仍然应该在我的构建中添加一些g++系统包含目录。换句话说,我需要-isystem/path/to/my/include添加到我的编译器标志中,但是当调用像cmake..这样的东西时.也许像cmake..-DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS-isystem/path/to/my/include"?有没有办法做到这一点? 最佳答案 我也有同样的问题。我找到了两个解决方案:oneproposedbysakrainapreviousanswer,即

c++ - 将 C 和 C++ 与 CMAKE 混合

我们主要用C编写应用程序,但一些子模块是用C++编写的(在Linux上)。问题是如何编写CMakeLists.txt文件以将g++用于某些子目录,而将gcc用于另一个。 最佳答案 如果没有另外设置,编译器和链接器通常由文件扩展名决定。因此,只要文件结尾没问题,您的代码就会被编译并与正确的编译器链接。附带说明,如果混合使用C和C++,请记住做出正确的外部C声明。 关于c++-将C和C++与CMAKE混合,我们在StackOverflow上找到一个类似的问题: h

c++ - 使用 cmake 编译日期和时间

如果是发布版本,我想使用cmake将VERSION设置为发布版本,否则设置为编译时间。使用make进行开发构建时,通过以下方式轻松获取编译时间-DVERSION=`date+%Y-%m-%d_%H:%M`可以直接被c/c++源代码使用。不幸的是,我还没有发现使用cmake时如何实现相同的效果。string(TIMESTAMPVERSION"%Y-%m-%d%H:%M")add_definitions(-DVERSION="${VERSION}")将VERSION设置为执行cmake的时间。使用cmake时如何将VERSION设置为编译时间(以避免在没有RELEASE标志的情况下不得不摆

c++ - 带有 CMake 的 Boost.Log 导致 undefined reference 错误

我正在尝试在我正在处理的项目中使用新的Boost.Log库。该项目是用CMake构建的。我收到链接错误,声称链接器遇到了对Boost.Log的undefinedreferenceLinkingCXXexecutablemainCMakeFiles/main.dir/main.cpp.o:Infunction`main':main.cpp:(.text+0x30):undefinedreferenceto`boost::log::v2s_mt_posix::trivial::logger::get()'我有一个简单的helloworld测试,但由于这些错误而失败。如果我链接Boost.L