我是cmake的新手。我想为使用cmake作为构建工具的模块构建添加一个新标志。我试图在CMakeLists.txt中添加该标志,但未反映更改。我应该将更改应用到其他文件吗?我试着用刷子清洗
$cmake清洁。
但问题依然存在
请求帮助
问候
Santosh如果你指的是编译器标志,那么你可以做如下操作,注意我也是新手,所以可能有更好的方法:
if( MSVC )
set( CMAKE_CXX_FLAGS " /DWIN32 /W3 /GX /GR /Wp64 /Zc:for
标签: Cmake
cross-compilingmsp430
我正在尝试使用CMake构建一个项目,该项目使用MSP430微控制器的。要使用它成功编译任何简单程序,我们需要传递一个指示目标处理器的编译标志,否则它会像这样失败:
$ msp430-gcc -o test test.c
In file included from test.c:1:0:
/usr/local/lib/gcc/msp430/4.6.3/../../../../msp430/include/msp430.h:813:2: warning: #warning Unable to id
我使用cmake gui配置OpenCV,我想在其他计算机上使用相同的配置。
因为我使用ssh而不使用X转发,所以无法使用cmake gui再次进行配置。
我不知道如何使用cmake完成配置,因此我想知道cmake gui是否可以生成用于cmake的命令?
是否仍要执行此操作?默认情况下,您无法执行所需操作,因为该路径存储在CMAKE_命令中,该命令是一个内部变量,因此在GUI中不可见。您可以使用grep CMAKE_command CMakeCache.txt | cut-d=-f2这样的命令
设想以下场景:项目A是一个共享库,它有几个依赖项(LibA、LibB和LibC)。项目B是一个依赖于项目a的可执行文件,因此也需要项目a的所有依赖项才能构建
此外,这两个项目都是使用CMake构建的,项目B使用它不需要安装项目A(通过“安装”目标),因为这可能会对开发人员造成麻烦
使用CMake解决这些依赖关系的最佳方法是什么?理想的解决方案应该尽可能简单(尽管不简单),并且需要最少的维护。容易。下面是我脑海中的一个例子:
顶级CMakeLists.txt:
组件/B中的CMakeLists.t
这个问题让我筋疲力尽。。。我花了好几天时间在这上面
我使用目标链接库链接A与B和C
目标链接库(A rootdir/B.lib rootdir/C.lib)
当B需要E和F目录中的其他文件时,我使用
链接目录(rootdir/E rootdir/F)
要包含目录E和F,但使用make VERBOSE=1,我发现虽然在E和F之前有cmake add-I,并将它们传递给链接,但它还添加了一些额外的标志,例如
-Wl,-rpath,rootdir/E:rootdir/F:
这些额外的参数从何而来?我如
标签: Cmake
code-generation
我在CMake下有一个项目,其中包含一些用python生成器从XML文件生成的文件。我无法在CMakeLists.txt中指定此生成器生成的所有文件,因此我使用文件全局绑定
问题是,当我更新XML文件或生成器源(位于同一存储库中)时,我希望重新配置生成系统,以便在重建代码时考虑更改的文件(例如,通过make)
是否可以使CMake像对待CMakeLists.txt文件一样对待某些文件,并在这些文件更改时使其重新生成生成系统?是的,您应该能够通过(ab)使用configure\u file()来做
我有一个cmake项目,其中有很多不同的目标。首先,它构建一个用于处理某些数据文件的可执行文件(我们称之为DataProcessor)。然后用可执行文件处理这些数据文件。然后,构建第二个可执行文件(我们称之为MyApp),并使用处理过的数据文件运行
还有一个目标,它获取所有已处理的数据文件和MyApp,并将它们打包到一个tar文件中,以便我们可以分发它们
在我的CMakeLists.txt文件中,我有以下几行:
get_target_property(DATA_PROCESSOR_EXE Dat
我试图使用CMake GUI在我的mac(运行Yosemite)上安装SFML。问题是当我尝试执行sudomakeinstall时
这是终端的输出
如您所见,我遇到一个致命错误:“未找到EGL/EGL.h”文件
以下是我启用的cmake选项(使用cmake GUI)
另外,源代码目录是目录的根目录(我做了gitclone)
编辑
发现问题在于SFML_OPENGL_ES选项。如何修复此问题?如果您只想在Mac上安装SFML,只需取消选中cmake中的SFML。如果您想为iOS和Android
我有这样的设置:
ADD_TEST(NAME TestMyCode COMMAND MyCode myparams) #produces output.txt
ADD_TEST(CheckOutput CompareFiles output.txt baseline.txt)
当我按顺序运行测试时,它的工作方式正是我想要的,但是如果我使用“ctest-jN”,顺序(显然)没有保留,因此当运行CheckOutput测试时,要比较的数据不一定可用。有没有办法执行命令?说“并行运行所有测试,但确保A
我正在将CMake 3.5.1与CLion一起使用,我正在尝试从URL下载并安装一个外部项目。My CMakeLists.txt包括:
include(ExternalProject)
set(EXTERNAL ${PROJECT_SOURCE_DIR}/external)
ExternalProject_Add(eigen_test
PREFIX ${EXTERNAL}/eigen
DOWNLOAD_DIR ${EXTERNAL}/eigen/download
我想将git descripe的输出作为字符串写入文件,这样我就可以将信息嵌入到我的二进制文件(C++)中。这必须跨平台工作
我能想到的最好的办法是:
add_custom_target( SubmarineGitVersion
COMMAND cmd /c "${CMAKE_EXECUTABLE}" echo czstring GIT_VERSION = STRINGIFY\( > "${CMAKE_CURRENT_BINARY_DIR}/GitVersion.hpp"
我将编写与某些函数优化相关的新转换过程,并将其贡献到LLVM中。
但被描述为使用动态LLVM可加载模块(.so扩展)
我想使用add\u LLVM\u library,而不是CMakeLists.txt中的add\u LLVM\u loadable\u module来编写LLVM过程。
我能做吗?如果是,怎么做?虽然我不确定您为什么要这样做,但可能回答了您的问题。只需将该代码段中的add_library()调用替换为add_llvm_library()
你也可以在树上开发你的通行证。为此,请将源
我正在尝试编写一个CMakeList.txt文件。我在生成的Makefile中得到一个错误
makefile:1:**缺少分隔符。停下来
我在每行的开头添加了选项卡。我想不出哪里出了错问题是您没有从以前的CMake配置运行中清理CMake生成的文件。
请删除CMakeCache.txt文件和Makefile以及目录CMakeFiles,如果它们存在,请删除文件cmake\u install.cmake和CTestTestfile.cmake
现在,您可以再次通过CMake.重新运行CMake配置
标签: Cmake
tesseractleptonica
我正在尝试编译Tesseract开源OCR引擎()的源代码
但在运行cmake时,我总是会遇到以下错误:
CMake错误:此项目中使用了以下变量,但是
它们被设置为NOTFOUND。请设置它们或确保它们已设置
并在CMake文件中正确测试:leptonica_OUTPUT_NAME
由目录/home/test/github/tesseract中的目标“libtesseract”链接
我已经下载了leptonica()的源代码并安装了它
我想知道应该将哪个值设置为leptonica\u OUTPU
我以为我很了解cmake,直到我遇到了这个我无法解决的问题。我在C中构建了一个静态库,我试图在C++中运行它的单元测试,但是我不能链接到那个库中的任何静态函数,我不知道为什么。我在下面的框架项目中重现了这个问题:
CMakeLists.txt:
cmake_minimum_required(VERSION 3.6)
project(myproj)
add_library(mylib STATIC mylib.c)
find_package(Boost 1.64.0 COMPONENTS
项目目录
如果您正在寻找一个快速解决方案,那么您将希望使用target\u include\u目录,可以这样使用:
target_include_directories(androi_app PUBLIC ${MY_CPP_PROJ_INCLUDE_DIR})
然后,您可以使用类似这样的方式生成android应用程序
cmake ../ -DMY_CPP_PROJ_INCLUDE_DIR=/your/cpp/proj/src/folder
但是,我建议使用CMake为my_c++\u项目生成
我想用cmake安装plexe相扑。我在plexe.car2x.org上学习了教程,结果如下:
-- CMAKE_BUILD_TYPE: Release
-- CMAKE_BINARY_DIR: /home/cc/src/plexe-sumo/build-release
-- CMAKE_SOURCE_DIR: /home/cc/src/plexe-sumo
--
-- Platform:
-- Host: Linux4.15.0-34-genericx86_64
-- CM
因此,我正在尝试构建一个其他人已经能够成功构建的cmake项目。主要问题是,在执行find_package()时,我总是会出现经典的cmake配置错误:
现在,cmake“考虑”是它应该使用的正确文件,即使版本是相同的。然而,即使在标准的重新安装、重新启动、清理重建之后,它也会因为这个错误而失败,实际上,它使用的是在另一台计算机上运行的相同文件
所以我想弄清楚的是,有没有办法弄清楚为什么它没有被明确接受?有我可以在这里尝试的cmake调试吗
这是在Windows 10机器上发生的,我要找的cma
标签: Cmake
ubuntu-18.04apt
我试图构建,但在运行cmake..时遇到以下错误:
CMake Error at CMakeLists.txt:44 (message):
Could not find triehash executable
如何修复此问题?此cmake尝试在系统中查找triehash实用程序。安装了吗?如果没有使用sudo-apt-install triehash此cmake将尝试在系统中查找triehash实用程序。安装了吗?如果no usesudo apt install triehash不起作用,
我从我的老师那里克隆了一个项目,我想在CLion上运行它。但是,我注意到一个错误:
CMakeLists.txt处的CMake错误:1(需要CMake_最小值):
需要CMake 3.14或更高版本。您正在运行3.13.2版
我在CLion中配置了一个新的CMake调试器,但仍然不断出现错误
我安装了新版本的CMake:
当我在cygwin中安装新的CMake版本时,CLion返回:
有人知道我遗漏了什么或做错了什么吗?听起来你想让CLion使用你最新版本的CMake(而不是捆绑的3.1
我正在尝试使用cmake构建一个程序。出于几个原因,必须使用静态库而不是动态库来构建程序,我需要使用PyTorch,所以这就是我所做的:
下载并安装了PyTorch静态库(我在/home/me/PyTorch/torch/lib的正确路径中找到了libtorch.a)
使用以下内容制作CMakeLists.txt:
仅供参考,example app.cpp是带有主函数的文件,argparse/是一个目录,其中包含一些在example app.cpp中调用的函数的源代码
它一直工作到cmake-D
标签: Cmake
code-generation
我在CMake下有一个项目,其中包含一些用python生成器从XML文件生成的文件。我无法在CMakeLists.txt中指定此生成器生成的所有文件,因此我使用文件全局绑定
问题是,当我更新XML文件或生成器源(位于同一存储库中)时,我希望重新配置生成系统,以便在重建代码时考虑更改的文件(例如,通过make)
是否可以使CMake像对待CMakeLists.txt文件一样对待某些文件,并在这些文件更改时使其重新生成生成系统?是的,您应该能够通过(ab)使用configure\u file()来做
我试图在康达虚拟环境下编译它
详细错误说明“make-j10”命令失败,原因如下。我想知道为什么libopencv_dnn.so.4.4.0有未定义的引用。我看到github opencv问题页面上有一些关于cudnn 8.0的固定问题。opencv dnn现在支持cudnn 8.0吗?
报告:
CMake配置为:
--
-- General configuration for OpenCV 4.4.0 =====================================
-- Ve
我在使用ExternalProject\u Add命令运行并行构建时遇到问题。
我有一个从internet下载的库,它是使用这个命令构建的。此库被下一个应构建的其他目标消耗。但是,我的使用者目标生成失败并出现错误,因为它找不到外部库。这是我的代码:
外部_library.cmake
...
ExternalProject_(project_library
DEPENDS ...
BUILD_COMMAND ...
INSTALL_COMMAND ...
)
...
consumer.cma
在Luarock中安装cutorch时,出现以下错误:
CMake Error at THC_generated_THCTensorIndex.cu.o.Release.cmake:280 (message):
Error generating file
/tmp/luarocks_cutorch-scm-1-2888/cutorch/build/lib/THC/CMakeFiles/THC.dir//./THC_generated_THCTensorIndex.cu.o
我的操作
我正在尝试使用CMake为一个中等规模的项目建立一个构建系统,该项目由几个较小的项目组成,其中一些项目是由外部开发的。我想要的目录结构如下:
basedir
|--libA
| |-src ( .cxx, source files )
| |-libA ( header files, such that #include statements are "libA/headerA.h" )
| |-bin ( executable, binary
我正在尝试将我的一个可执行文件的-S传递给GCC。我试过这个:
set_target_properties(MyTarget PROPERTIES COMPILE_FLAGS "-S")
但我得到了“文件格式不可识别;视为链接器脚本”
(如果没有这条线,它可以正常工作)
像这样传递-S有什么问题吗?或者是否有其他方法让CMake输出程序集.s文件?如果您试图实际构建MyTarget并离开生成的程序集,您可以将-s替换为-save temps,然后执行使MyTargetCMake为汇编程序和预
我试图使用${CMAKE_COMMAND}-E copy格式复制多个文件,但我想知道是否有办法提供大量文件以复制到特定目录。似乎cmake copy一次只允许复制一个文件。我真的不想重复使用copy命令,因为我宁愿提供要复制的文件列表作为第一个参数
我认为最简单的解决方案是使用依赖于平台的“cp”命令。虽然这显然不利于可移植性,但我们的系统保证构建在Linux上。一个简单的、独立于平台的解决方案会更好。一个相对简单的解决方法是使用${CMAKE_COMMAND}-E tar捆绑源代码,移动tar
正如在标题中所说,我想在cmake中编写一个“nice”函数,它能够修改作为参数传递到该函数中的变量
我能想到的唯一方法就是丑陋:
函数定义
用法
结果
在我看来,根本没有真正的变量概念可以传递?!
我觉得cmake有一些基本的东西我还没有接受
那么,有没有更好的方法呢
非常感谢 不需要传递变量的值和名称。名称足够了,因为您可以通过名称访问值:
function(twice varName)
SET(${varName} ${${varName}}${${varName}} PARENT_S
我正在尝试使用CMake创建我的解决方案。这是我第一次,我从一些简单的事情开始
我制作了一个文本文件(CMakeLists.txt)并在CMake中使用它。我可以“配置”而不出错,但在尝试生成时出错:
CMake Error at CMakeLists.txt:75 (ADD_EXECUTABLE):
Cannot find source file:
./source/server/server.hpp
Tried extensions .c .C .c++ .cc .cpp
当我用cmake构建一个项目时,我遇到了以下错误。虽然我试图通过在CMakeLists.txt中添加编译标志-fPIC,但此错误仍然存在。有人能帮忙吗?我是新来的。如有任何建议,将不胜感激
/usr/bin/ld: /act/mvapich2-1.9/gcc-4.7.2/lib/libmpich.a(mvapich_malloc.o): relocation R_X86_64_32S against `.bss' can not be used when making a shared obje
CMake文档说明,当执行add_子目录时,CMake会在目录中查找CMakeLists.txt。有没有办法更改makefile的名称?例如,如果我有两个cmake文件,用于两种完全不同的配置,并且不想将所有内容混合在一个配置中
当然,我可以创建CMakeLists.txt并根据配置在其中包含其他内容,但我只是想知道是否可以让add_子目录查找具有任意名称的make文件不,没有办法。文件名CMakeLists.txt在CMake本身中是不可配置的硬编码文件。正如您所说,您最好的选择是创建一个“路
在CMakeLists.txt中,我有:
if( "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin" )
find_package( Qt5MacExtras ${QT_VERSION_REQ} QUIET )
endif()
...
...
target_link_libraries( MyApp Qt5::Widgets Qt5::MacExtras )
因此,MacExtras Qt5软件包是可选的。但是,当系统不是Mac时,Qt5::MacExtra
我在.cmake文件中有一些选项:
option (OPTION_1 "option 1" ON)
option (OPTION_2 "option 2" OFF)
然后我想打印这些选项,如下所示:
foreach (_variableName ${_variableNames})
message(STATUS "${_variableName}=${${_variableName}}")
endforeach()
get_cmake_property (_variableNames
如果我做了文件(GLOB“*.cpp”)它看起来在哪里?搜索的工作目录是什么?它是当前的源目录吗?它似乎没有记录在任何地方(尽管它是为文件(复制)).搜索发生在当前源目录中,即CMakeLists.txt的目录
关于您希望通过此实现的目标,我想强调以下几点:
注意:我们不建议使用GLOB来收集源文件列表
如果没有CMakeLists.txt文件,则当源
则生成的生成系统无法知道何时添加或删除
让CMake再生
文件(GLOB globbing expression)接受globbing expr
我有一个简单的CMakeLists.txt
add_executable(myexecutable test.cpp)
我不打算使用CMake来间接负责构建程序。我打算使用它,这样我就可以使用CYONE,并有一个很好的IDE经验来处理我的C++程序。
如果我在命令行中点击buildinclion或cmake-build,我希望它调用我真正的构建工具。如何指定要运行的构建工具而不是正常的构建cmake/clion?我只能找到add_custom_命令,该命令可以在正常的cmake/clion构建
我有一些遗留代码(针对mysql嵌入式服务器库构建),其中包含如下链接行:
-L/usr/local/lib -lmysqld -lm -ldl -lcrypt -lpthread
我知道我可以通过cmake--help module list获得受支持的cmake模块列表,但是如何知道哪些模块包含libm.a、libdl.a等库
我知道我可以使用link\u目录(/usr/local/lib)来指定位置,只需将-lm、-ldl等放入我的target\u link\u库命令中,但文档似乎不鼓
我想将我的构建类型添加到cmake以如下方式调用cmake:
cmake-DCMAKE\u BUILD\u TYPE=mytype
我已将字符串写入我的CMakeLists.txt:
set(CMAKE\u CXX\u FLAGS\u DEBUG“-fPIC-o0-g”)
设置(CMAKE\U CXX\U标志\U MYTYPE“-fPIC-o0-g-m32)
设置(CMAKE\U CXX\U标志\U发布“-fPIC-o3)
但是cmake使用编译器标志,这些标志是在cmake\u CXX\u f
标签: Cmake
rpmpackagingrpmbuildcpack
根据上的本教程,我能够通过一个构建创建两个RPM,并执行以下操作:
我的等级库文件类似于:
Name: @CPACK_PACKAGE_NAME@
License: the license
Summary: the summary
Group: Applications
Version: @CPACK_PACKAGE_RELEASE_VERSION@.@CPACK_PACKAGE_MINOR_VERSION@.@CPACK_PACKAGE_SERVICE_PACK@
Re
标签: Cmake
dryidiomscompiler-options
我发现在CMake中直接设置CFLAGS是一种不好的做法,相反,我应该使用target\u compile\u definitions()命令
好的,但是-如果我想对多个(独立)目标使用类似/相同的定义,该怎么办?我不想一次又一次地重复我自己。我看到了三种可能的方法:
首选的一种,使用它可以通过命令将编译器定义自传播到目标,具体取决于它
使用可为多个目标设置相同的定义
您仍然可以使用和的“旧命令”来修改目录属性(这将预先设置此目录范围内的所有目标属性)
工具书类
tl;dr:您可以在循环中
我正在c++上做一个项目,需要执行CMakeLists.txt文件来运行它。我使用sudo安装了cmake、doxygen、cmake诅咒gui和make。然后我试着运行这个文件
以下是cmake代码的一部分-
if (BUILD_DOC)
find_package(Doxygen)
configure_file(${PROJECT_SOURCE_DIR}/doc/Doxyfile.in
${PROJECT_SOURCE_DIR}/doc/Doxyfile @ONLY)
我有一个共享库,libShared,用于构建不同的可执行文件。我要做的是基于构建可执行文件向共享库添加额外的编译定义
CMakeLists.txt在我的lib文件夹中:
...
add_definition(-Dfoo -Dbar)
add_library(shared ${SOURCES})
...
add_executable(exe1 ${SOUCE_FILES})
add_dependencies(exe1 shared)
# <How Do I append -DForExe1
安装一些构建构件后:
install(TARGETS linktest
DESTINATION .
COMPONENT linkTest)
我想使用install(code)对这些工件进行一些后处理,大致如下:
install(CODE "
execute_process(COMMAND sh -c \"
echo Do stuff in `pwd`
exit 0
\")
" COMPONENT linkTest)
install(code)的默认工作
我正在用Qt5开发一个项目,我想在CMake脚本中运行一个过程。我需要部署应用程序,以便了解Qt5库的路径,以便在CMake上运行windeployqt.exe并创建应用程序的安装程序。脚本中是否有具有Qt5路径的变量?我在各种项目中使用以下代码段:
# extract the Qt root dir
if (TARGET Qt5::qmake)
get_target_property(_qt5_qmake_path Qt5::qmake LOCATION)
get_filename_c
我正在尝试使用cmake编译一个程序,该程序会导致以下错误:
CMake错误位于/../3dg.CMake:8(启用语言):
CMAKE_CXX_编译器:
抄送
不是完整路径,在路径中找不到
通过设置环境或
变量“CXX”或CMake缓存条目CMake_CXX_编译器指向完整路径
到编译器,或到编译器名称(如果在路径中)。
调用堆栈(最新调用优先):
CMakeLists.txt:8(包括)
CMake错误位于/../3dg.CMake:8(启用语言):
CMAKE_C_编译器:
抄送
不是完整
我正在编写一些文档,并希望使用它们的规范/常用/最广为人知的名称来参考两个主要的CMake步骤
为了清楚起见,我对以下两个方面感兴趣:
cmake -S . -B BUILD_DIR -DCMAKE_BUILD_TYPE=RELEASE // the 'first' command
cmake --build BUILD_DIR // the 'second' command
我已经看到了分别称为“配置”和“生成”的步骤
我正在使用vcpkg在Windows上安装OpenCV4。但当我尝试链接我的应用程序时,我使用的一个OpenCV类给我带来了麻烦:
2>main.obj : error LNK2019: unresolved external symbol "public: __cdecl cv::VideoWriter::VideoWriter(void)" (??0VideoWriter@cv@@QEAA@XZ) referenced in function main
2>m
我广泛使用了cmake变量,例如:
if (${WIN32)
...
endif()
但是,我不知道如何在生成器表达式中正确使用WIN32变量。我天真地试过:
target_link_libraries(mytarget
PUBLIC
$<$<AND:${SOME_DEPENDENCY_ENABLED}, ${WIN32}>:bcrypt>
$<$<AND:${SOME_OTHER_DEPENDENCY_ENAB
标签: Cmake
blasopenblasxtensor
免责声明:我是building/make/packages/cmake的noob。
我的目标:在C++中使用xtensorblas库
我的环境:Win10 x64,CLion2021
我的问题:无法获得最简单的示例进行编译。关于项目依赖性的信息。
我尝试过:1)使用我能在谷歌上搜索到的每一个教程手动下载和编译openBLAST-总是在遇到不同的问题时停止。要么我没有“nmake”,要么由于某种原因构建失败,要么我得到了“未定义的引用”等等——我已经不知所措好几天了。希望您能一步一步地进行演练。
我正试图将allegro5纳入cmake项目
find_package(PkgConfig REQUIRED)
include_directories(${PROJECT_SOURCE_DIR})
add_executable(app main.c)
pkg_check_modules(allegro-5 REQUIRED allegro-5)
target_link_libraries(app ${ALLEGRO5_LIBRARIES})
target_include_directorie
上一页 1 2 3 4 5 6 7 8 9 ...
下一页 最后一页 共 118 页