草庐IT

CMAKE_CURRENT_LIST_DIR

全部标签

cmake - CMakeLists.txt中应该在哪里调用find_package?

在cmake项目中包含外部库通常使用find_package()执行。但是在一个大型的多应用程序/多库项目中,一些第3方和/或系统库被多个应用程序和库使用是很典型的。这些常用库的find_package()应该在哪里调用?在每个需要它们的可执行文件/库的CMakeLists.txt文件中?或者,在顶级CMakeLists.txt文件中?第一个选项似乎是一种更加模块化的方法,但相关的find_package()脚本是为使用它们的每个库/可执行文件执行的。这会减慢配置步骤。第二个选项更有效,但对我来说看起来有点像全局变量。 最佳答案 我

python - BoostPython 和 CMake

我已成功关注this如何连接C++和python的示例。当我使用给定的Makefile时它工作正常。当我尝试使用cmake时,效果并不理想。C++代码:#include#includeextern"C"charconst*greet(){return"hello,world";}BOOST_PYTHON_MODULE(hello_ext){usingnamespaceboost::python;def("greet",greet);}intmain(){std::cout生成文件:#locationofthePythonheaderfilesPYTHON_VERSION=27PYTHO

c++ - CMake 可以找到一个 Boost 头文件,但找不到另一个

由于Boost库可以单独安装在某些系统上(即使这种情况可能很少见),我想确保它们可用。我通过检查一些我需要的头文件来做到这一点:check_include_file_cxx(boost/parameter/keyword.hppHAVE_BOOST_PARAMETER_KEYWORD_HPP)check_include_file_cxx(boost/asio/io_service.hppHAVE_BOOST_ASIO_IO_SERVICE_HPP)我遇到的问题是CMake声称它可以找到boost/parameter/keyword.hpp头文件,但找不到boost/asio/io_se

c++ - initializer_list函数重载的解决

#includeusingnamespacestd;classA{public:explicitA(constinitializer_list&a){}};voidfunc(constvector&a){}voidfunc(Aa){}intmain(void){func({1,2,3});}此代码编译失败:(19):errorC2668:'func':ambiguouscalltooverloadedfunction(13):note:couldbe'voidfunc(A)'(9):note:or'voidfunc(conststd::vector>&)'with[_Ty=int](1

c++ - 氧气/C++ : Global namespace in namespace list

我可以在用Doxygen生成的文档的命名空间列表中显示全局命名空间吗?我有一些函数是extern"C",它们出现在声明它们的头文件的文档中,但不在namespace列表中,给人的印象是它们实际上并不存在。. 最佳答案 据我所知,Doxygen仍然缺少此功能。一种不太冗长的解决方法是使用@defgroupMyGlobals并将extern"C"函数放在该组中:/*!@ingroupMyGlobals*@{*///...functions/*!@}*/这会将函数添加到Modules选项卡上名为MyGlobals的条目中。Thisblog

c++ - 使用 boost::random 从要删除元素的 std::list 中进行选择

查看此relatedquestion更通用地使用BoostRandom库。我的问题涉及从std::list中选择一个随机元素,执行一些操作,这可能包括从列表中删除元素,然后选择另一个随机元素,直到满足某些条件满意。boost代码和for循环大致如下所示://createandinsertelementsintoliststd::listmyList;//[...]//selectuniformlyfromlistindicesboost::uniform_intindices(0,myList.size()-1);boost::variate_generator>selectIndex

cmake应用:集成gtest进行单元测试

编写代码有bug是很正常的,通过编写完备的单元测试,可以及时发现问题,并且在后续的代码改进中持续观测是否引入了新的bug。对于追求质量的程序员,为自己的代码编写全面的单元测试是必备的基础技能,在编写单元测试的时候也能复盘自己的代码设计,是提高代码质量极为有效的手段。  本文主要介绍以下几个方面的内容:  1、何为单元测试  2、何为gtest  3、怎么使用gtest  4、怎么运行测试一单元测试是什么?  单元测试(UnitTesting),一般指对软件中的最小可测试单元进行检查和验证。最小可测试单元可以是指一个函数、一次调用过程、一个类等,不同的语言可能有不同的测试方法,暂时不必深究。  

c++ - "std::map with mutexes"与 "libcds maps (Michael Hashmap and Split Order List)"并行插入、查找、删除之间是否有任何速度测试?

所以我真的很想看到一些并行的速度测试(比如从100到10000个并行线程),其中每个线程至少在3种类型的并发映射上插入、查找、删除-std::map(有一些互斥锁)与libcds(ConcurrentDataStructures)...例如,如果这样的比较尚不存在,请帮助我创建一个。直接相关:LibCds:MichaelHashmapandSplitOrderList假设我们有#include#include#includeclassTestDs{public:virtualboolcontainsKey(intkey)=0;virtualintget(intkey)=0;virtua

c++ - 打印 C++ 项目中的所有代码 list

我需要打印一个由一堆.h和.cpp文件组成的项目的源代码(我需要把它交给我的老师)。是否有IDE或程序可以让您一次打印(或导出为PDF或Latex)所有文件,并可能保持语法突出显示?我尝试使用XCode和VisualStudio,但它们只允许一次打印一个文件。 最佳答案 GNU工具,如a2ps或enscript可以将源代码转换为postscript文件,然后您可以打印这些文件或将其转换为pdf。它们支持各种语言的语法高亮显示,并且可以将多个文件捆绑到同一个文档中。 关于c++-打印C++

c++ - std::initializer_list<> 和一个引用参数

我刚开始使用初始化列表,我想知道它们的工作方式是否与其他STL容器相似。我的意思是他们复制值(value)观吗?我想做的是一个简单的min()函数,如下所示:templateT&minArgs(conststd::initializer_list&Arguments){constT*Smallest=Arguments.begin();for(constT*I=begin(Arguments);I!=end(Arguments);++I){if(*I然而,当我调用函数时,我从GCC得到了这个:error:'const'qualifierscannotbeappliedto'int&'我