草庐IT

vs-cmake-examples

全部标签

c++ - CMake 库依赖项

这可能有点难以完整解释。我已经为我正在编写的一系列C++库设置了一个目录结构。我打算使用CMake来处理构建这些库。大多数情况下,这些库是完全独立的“子系统”,但在奇怪的地方,一个库需要访问另一个库中包含的头文件。这是我的目录结构。base├─cmake├─docs├─examples└─sources├─libA│├─include││└─libA││├─core.h││└─*.h│├─source││└─*.cpp└─libB├─include│└─libB│├─message.h│└─*.h└─source└─*.cpp在一些地方有CMakeLists.txt文件。主要的是在根目

c++ - 如何在 CMake 中添加 "-l"(ell) 编译器标志

在Ubuntu16上工作我使用g++main.cpp-lpq命令编译我的小项目。现在我使用Clion并想做与g++相同的事情。但是我无法在cmake文件中添加编译器标志并出现编译错误。cmake_minimum_required(VERSION3.5.1)project(day_g)set(CMAKE_CXX_FLAGS"-lpq")add_definitions(-lpq)message("CMAKE_CXX_FLAGSis${CMAKE_CXX_FLAGS}")set(CMAKE_CXX_STANDARD11)set(SOURCE_FILESmain.cpp)add_executa

c++ - 在两个连续的 pragma omp for 的情况下隐式屏障 vs nowait

查看文档here,以下结构定义明确:#pragmaompparallel//Line1{#pragmaompfornowait//Line3for(i=0;i自从Herethenowaitclauseimpliesthatthreadscanstartonthesecondloopwhileotherthreadsarestillworkingonthefirst.Sincethetwoloopsusethesameschedulehere,aniterationthatusesa[i]canindeedrelyonitthatthatvaluehasbeencomputed.我很难理

用Cmake build OpenCV后,在VS中查看OpenCV源码的方法(环境VS2022+openCV4.8.0) Part III

用CmakebuildOpenCV后,在VS中查看OpenCV源码的方法(环境VS2022+openCV4.8.0)PartIII用CmakebuildOpenCV后,在VS中查看OpenCV源码的方法(环境VS2022+openCV4.8.0)PartI_松下J27的博客-CSDN博客用CmakebuildOpenCV后,在VS中查看OpenCV源码的方法(环境VS2022+openCV4.8.0)PartII_松下J27的博客-CSDN博客      前面已经知道了如何在opencv.sln的项目中查看源码,现在看看怎么在自己创建的项目中调用opencv的库,并在debug的模式下查看源码

c++ - OpenMP shared vs. firstprivate performancewise

我在类方法中有一个#pragmaompparallelfor循环。每个线程只读访问很少的方法局部变量,很少调用私有(private)数据和方法的参数。所有这些都在shared子句中声明。我的问题:性能方面应该没有任何区别声明这些变量shared或firstprivate。对吧?如果我不小心让变量不共享相同的缓存行,是否也是如此?如果其中一个共享变量是一个指针,并且在线程内我通过它读取一个值,是否存在像普通循环中那样的别名问题?明天我将尝试分析我的代码。同时感谢您的建议! 最佳答案 嗯,它们不是一回事。使用shared,它们在所有线程

c++ - VS 2010 中返回值的编译器优化

使用完全优化的VS2010/Ox查看以下两个函数调用:staticstringtest1(conststring&input){returninput;}staticvoidtest2(conststring&input,string&output){output=input;}如果我使用后一个test2,那么函数总是被优化掉并且代码被内联。但是,除非我关闭异常,否则不会内联test1。有人知道为什么吗?此外,如果编译器使用返回值优化,我希望编译器能够在test1中像test2一样高效地工作,但它似乎没有这样做。这也是我的困惑。我想使用第一个函数签名的原因是我有该函数的两个可编译版本。

c++ - CMake 和处理子文件夹头文件

我正在尝试设置我的项目以构建多个包含其完整功能的动态库。每个库都有子文件夹。子文件夹库相互依赖,因此它们必须相互引用函数。我似乎已经设法让CMake在项目上没有错误地运行,但是当我去构建时,我的标题找不到彼此时遇到了麻烦。似乎在构建时,包含路径设置不正确。我怎样才能解决这个问题?是否需要采取其他步骤才能正确设置包含路径?结构看起来像这样rootCMakeLists.txtbinliblib0CMakeLists.txtlib0.hlib0.cpplib1CMakeLists.txtlib1.hlib1.cpp...在根目录的CMakeLists.txt中,我有这样的声明:set(ROO

c++ - CMake:如何根据不同的主条目进行编译

假设我有两个main条目,一个在main1.cpp中,一个在main2.cpp中(还有其他文件也是,但只有两个主要条目)。如何配置CMakeLists.txt文件,以便我可以根据不同的目标包含main1.cpp或main2.cpp?即我最终将能够使用“maketarget1”生成基于main1.cpp的exec1和“maketarget2”生成基于exec2main2.cpp以及其他文件。 最佳答案 听起来像是用除主电源之外的所有资源制作图书馆的案例。然后只需添加两个可执行目标,每个都链接到库。add_executable(MyEx

c++ - 朴素矩阵乘法的优化(ICC vs GCC)

下面的代码使用一种非常直接的方法来计算矩阵乘积a*b并将结果存储在c中。该代码是在GCC4.4.6(使用-mtune=native)和英特尔编译器13.0.1上使用-O3编译的,GCC的速度明显更差(超过所用样本数据的两倍)。我很好奇造成这些差异的原因,但不幸的是,我对汇编输出不够熟悉,无法理解这里发生了什么。乍一看,似乎ICC在矢量化计算方面做得更好,但我无法破译更多。(这主要用于学习目的,因为我无法在生产中使用它!)void__attribute__((noinline))mm(//Line3intn,double*__restrict__c,double*__restrict__

c++ - 使用 biicode cmake 在 Debug模式下构建 C++

由于我无法从发布版本更改为调试版本类型,我想知道我做错了什么。我正在使用UnixMakefile。在docs.biicode.com/c++/building.html中说明了如何在CMakeLists.txt中添加SET()来向cmake添加变量。我是cmake和biicode的新手,我尝试了所有:ADD_DEFINITIONS(-DCMAKE_BUILD_TYPE=Debug)ADD_DEFINITIONS(-DCMAKE_BUILD_TYPE:STRING=Debug)SET(CMAKE_BUILD_TYPEDebug)target_compile_options(my_prog