我已经用cmake创建了eclipse项目。我使用vtk和qt。目录结构如下:
parent_dir:
source - source.h, source.cpp
build - this is where the .project resides
我已经用workspace dir/path/parent启动了eclipse
我已按照中描述的说明进行操作
.
一切都很好,但导航不起作用。也就是说,eclipse警告我source.h尚未编制索引
此外,自动完成不适用于qt和v
有没有办法检查找到的库是否是静态库?为了找到库,我执行以下操作:
IF(WIN32)
SET(CMAKE_FIND_LIBRARY_SUFFIXES .lib)
ELSE()
SET(CMAKE_FIND_LIBRARY_SUFFIXES .a)
ENDIF()
find_library(QUANTLIB_LIBRARY NAMES QuantLib PATHS ${QUANTLIB_LIBRARY_SEARCH})
但是在windows上,.lib可以是DLL的符号文件。我需
我试图确定CMake找到的wxWidgets版本是否>=2.9。我试过这个:
find_package(wxWidgets 2.9 COMPONENTS core base REQUIRED)
if(wxWidgets_FOUND)
message("wxWidgets found successfully.")
include( ${wxWidgets_USE_FILE} )
else()
message(FATAL_ERROR "wxWidgets was not found!"
我想添加一个依赖于成功构建的整个项目的测试目标,而不需要重新指定对所有库或可执行文件的依赖关系
我将在make中这样写:
all: foo bar
foo: ...
bar: ...
test: all
test.sh
sh隐式使用foo和bar,并希望它们是最新的
这就是我希望在cmake中指定的方式
add_library(foo ...)
add_executable(bar ...)
add_custom_target(test test.sh
我想使用CMake生成模糊的lua文件以供交付。对于我来说,我无法使用add_custom_命令+add_custom_目标来为我构建这些文件。我遗漏了一些东西
ADD_CUSTOM_TARGET(LUABIND_COMPILED_FILES ALL)
FOREACH(F ${LUA_SCRIPT_FILES})
ADD_CUSTOM_COMMAND(
OUTPUT ${LUA_COMPILED_SCRIPTS}/${F}
COMMAND ${LUAC} -o ${LUA_COMPILED_SC
我正在使用cmake创建包
我有以下结构
bin/
bin1
lib/
lib1
lib2
其中lib1和lib2是外部动态库。如何设置RPATH,使其自动链接到lib1和lib2?好的,CMake会自动将RPATH添加到您正在链接到target_link_libraries()的所有目标中
要关闭它,有一个CMAKE\u SKIP\u RPATH选项。我也一直在与CMAKE争论这个问题。Cmake使用Cmake_SKIP_BUILD_RPATH在构建时进行链接,并使
CMake问题
导入的库在创建它的目录及其下具有作用域
如果我想在父作用域中使用这个库,我应该怎么做
比如说,
top CMakeLists.txt
add_subdirectory(sub)
add_executable(myapp main.cpp)
target_link_libraries(myapp imported_lib)
add_library(imported_lib STATIC IMPORTED)
sub-CMakeLists.txt
add_subdirectory(
我在装有英特尔11.0编译器的Linux机器上使用CMake 2.8.7。我第一次尝试使用CMake,因为我想在Windows和Linux机器上构建这个项目
我首先想到了使用简单的方法,并使用了一个标准的Hello World示例:
我的src/HelloWorld.f90:
!Test helloworld in Fortran using Cmake
program hello
print *, "Hello World!"
end program hello
我的主要CMakeL
标签: Cmake
ubuntu-12.04ros
我阅读了几乎所有的图书馆链接教程,但没有一个能解决我的具体问题
我有一个名为VSCOM_API_TEST的文件夹,其中包含以下文件和文件夹:
VSCOM_API_测试/CMakeLists.txt
VSCOM\u API\u TEST/include/vs\u can\u API.h
VSCOM\u API\u TEST/include/startup.h
VSCOM_API_TEST/lib/libvs_can_API.so
VSCOM_API_TEST/lib/libvs_can_API.
有人能帮我吗?我正在尝试用Visual Studio 2010 Express配置CMake,但失败了。整个错误消息如下所示:
C编译器标识为MSVC 16.0.30319.1 CXX编译器
标识为MSVC 16.0.30319.1检查C编译器是否工作
使用:Visual Studio 10使用:Visual Studio 10检查C编译器是否正常工作
Studio 10--在C:/Program Files/CMake处出现损坏的CMake错误
2.8/share/cmake-2.8/Modu
我试图在同一个CMakeLists.txt文件中编译一些32位和64位的代码。我认为最简单的方法是使用函数。编译中使用的(静态)库也构建在CMakeLists.txt文件中。然而,尽管在不同的目录中构建它们,CMake抱怨说:
add_library cannot create target "mylib" because another target with
the same name already exists. The existing target is a static libr
我正在编写CMake脚本,该脚本应执行以下操作:
创建一个静态库
使用python脚本处理上述库文件
注意(2)应该在构建静态库之后完成。据我所知,add_custom_命令不起作用,因为它是在配置过程中处理的。我尝试使用execute\u process,如下所示:
EXECUTE_PROCESS(
COMMAND ${SCRIPT} --source /my/path/myLib.a --dest ${TEMP_DIR}
WORKING_DIRECTORY ${TEMP_DIR}
我正在尝试使用cmake构建一个小的C++代码
我还没有g++
(我正在virtualbox操作系统上测试)
当我调用cmake.
我收到了令人讨厌的错误信息
-- The C compiler identification is GNU 4.7.2
**-- The CXX compiler identification is unknown**
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C co
在构建和运行测试时,也会执行libevent测试。如何排除它们并只运行我自己的测试?查看libevent的CMakeLists.txt文件中的,通过将EVENT\uu disable\u tests设置为ON,似乎可以非常轻松地禁用这些测试
在包含libevent之前,您可以在自己的CMakeLists.txt中执行此操作:
set(EVENT__DISABLE_TESTS ON)
...
add_subdirectory(lib/libevent)
或者在命令行上调用CMake时:
cmak
我正在尝试配置我的生成系统,以便我的发布生成不包含额外的调试。但我在CMake文档中找不到任何地方列出了每个构建类型默认使用的编译器标志,我宁愿不发明自己的方法
此功能是否已经存在?在不诉诸试错的情况下,如何确定各种构建类型默认使用的标志?提供了一些有用的信息,并介绍了一些常见的反模式
CMake开箱即用的四种构建类型是Release、Debug、RelWithDebInfo和MinSizeRel。相应地,在CMake\u C\u FLAGS\u和CMake\u CXX\u FLAGS\u中,C
或任何包含目录/库
我使用cmake gui工具,所以我运行它,通常gui会突出显示它找不到的包含或库,并让您打开一个打开的对话框来设置路径,但是对于这个cmake cofig,它不会这样做,它会在gui工具的输出中以红色文本告诉您
CMake Error at C:/Program Files/CMake/share/cmake-3.0/Modules/FindPackageHandleStandardArgs.cmake:136 (message):
Could NOT find ZLI
我在“xsd”子目录中有一组.xsd文件。我使用外部命令生成一组用于XML绑定的.hxx和cxx文件
add_custom_command(
PRE_BUILD
OUTPUT ${PROJECT_SOURCE_DIR}/xsd/file1.hxx ${PROJECT_SOURCE_DIR}/xsd/file1.cxx
COMMAND ${XSD_EXECUTABLE} cxx-tree
--file-list-prologue 'set(XSD_GENERATED_FILES '
标签: Cmake
add-custom-command
我正在使用一个外部库,它提供了一个用于自动代码生成的CMake函数,将在我的CmakeList中使用。问题是,每当我修改CMakeLists时,该函数就会再次运行,从而触发重新编译新生成但未更改的源。我需要像add_custom_command这样的东西,可以将CMake函数指定为命令而不是可执行文件,这样,只有在自动生成的文件不存在的情况下才能运行该函数。
这是否可行?如果没有,是否存在获得相同结果的其他方法?
谢谢。若要阻止该函数运行,只需将其包装到中即可:
if(NOT EXISTS ${
我正在使用cmake 2.8.12.2。我已经设置了CMAKE\u DEBUG\u POSTFIX,它会自动与add\u library命令一起使用。但它不会自动与add_executable命令一起使用。我发现我可以设置DEBUG\u POSTFIXtarget属性,以便在可执行文件名中获得调试后缀,但这需要使用额外的命令
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
set_target_properties(${PROJECT_NAME}
我们将在CMake中“配置”文件Version.h:
configure_file("Version.h.in" "${CMAKE_CURRENT_BINARY_DIR}/Version.h" @ONLY)
在这个文件中,我有CMake变量,例如:
#define HELLO_VERSION_MAJOR @VERSION_MAJOR@
“叮当”格式在最后一个“@”前面加一个空格:
#define HELLO_VERSION_MAJOR @VERSION_MAJOR @
我应该修改什么规则来
标签: Cmake
pattern-matching
我有一个小库,它的文件结构如下:
CMakeLists.txt
LibFoo/
Foo.h
FooWin.cpp
FooWin.inl
FooPosix.cpp
FooPosix.inl
当我必须在特定操作系统(例如Windows)中构建库时,在使用宏使用file(GLOB_RECURSE)之前,它们应该包含在列表中:
macro( add_recursive dir retVal)
file( GLOB_RECURSE ${retVal} ${dir}/*.h ${dir
标签: Cmake
visibilitydeprecation-warning
在配置我的CMake项目时,我不断遇到此问题:
示例/CMakeLists.txt:74(添加可执行文件)中的CMake警告(dev):
未设置策略CMP0063:尊重所有目标的可见性属性
类型。有关策略详细信息,请运行“cmake--帮助策略CMP0063”。使用
cmake_policy命令设置策略并抑制此警告
“可执行文件”类型的目标“Protonect”具有以下可见性
为CXX设置的属性:
CXX_VISIBILITY_PRESET
VISIBILITY_INLINES_HIDDEN
myapp和mylib之外还有更多的应用程序和lib,但它们都以类似的方式构建和链接,所以如果我有一个,我可以得到所有
按照项目目前的构建方式,有一个脚本基本上有4行:
cmake path/to/myproject // with the necessary flags and variables passed
make all DESTDIR=$INSTALL_DIR install
cd src/libs ; make all
cd src/apps ; make all
这是因为
我希望能够为本机arch(32位或64位)编译我的项目,并且即使在64位主机上也能为32位编译它。添加一个选项和一堆带有编译标志的if是唯一的方法还是有更好的方法?我需要支持UNIX makefiles和NMAKefiles。使用工具链文件:这里是@malak提供的一个
# the name of the target operating system
set(CMAKE_SYSTEM_NAME Linux)
# which compilers to use for C and C++
set
因此,通过查看最新版本的GLM 0.9.7,我在任何地方都看不到FindGLM.cmake文件,该文件用于轻松地将GLM包含在cmake中。我总是可以使用网上找到的旧版本,但以下承诺让我感到困惑:
提交消息为“已删除过时的FindGLM”。那么,开发人员是刚刚转储了它还是事实上有了一种在CMAKE中查找库的新方法?是的,CMAKE查找模块(FindXyz.CMAKE文件)被弃用,取而代之的是包配置文件(通常命名为XyzConfig.CMAKE)。最初的理念是,查找模块由CMake提供和维护,而
使用find_包,并显示:
为每个Qt模块创建导入的目标。应首选导入的目标名称,而不是在诸如target_link_库之类的CMake命令中使用变量,如Qt5_库
它是Qt专用的还是find_package为所有库生成导入的目标?报告说:
当发现包时,通过包本身记录的变量和导入的目标提供包特定的信息
报告说:
使用find_package的结果要么是一组导入的目标,要么是一组与构建相关信息相对应的变量
但是我没有看到另一个FindXXX.cmake-脚本,文档中说创建了导入的目标。实际上,对于f
我在我的项目中使用CMake。通常我在启动测试脚本之前运行make,这样,如果代码发生了更改,我就不会测试过时的二进制文件。如果我看到关于编译或链接等的行,我知道有些事情已经改变了。但如果没有任何变化,我仍然看到:
[100%] Built target foo
我真的不想看到这一切。我的意思是,我不想要一个完全沉默的构建——只是为了防止不需要任何操作。我该怎么做
PS-以下是制作-rRd | grep“必须重新制作”的结果:
Must remake target 'cmake_che
我使用的是Debian8,并且已经安装了libgtkmm-3.0(还有-dev)。现在我有一个使用gtkmm的非常简单的程序,基本上是一个Hello World:
main.cpp:
#include“./include/BrowserWindow.class.hpp”
#包括
int main(int argv,char*argc[])
{
Glib::RefPtr app=Gtk::Application::create(argc,argv,“org.gtkmm.example”);
浏览器
我是windows用户,这是我第一次使用Ubuntu 16.04 LTS。我想使用cmake构建LLVM通道。。命令完全如中所述。因此,我使用sudo-apt-get-install-LLVM从ubuntu终端安装了LLVM3.8。当我看到系统目录时,我意识到LLVM安装的唯一cmake目录位于/usr/share/LLVM-3.8/cmake,而其余LLVM目录(bin、build、include、lib、libexec、share)位于/usr/lib/LLVM-3.8/。当cmake目录的
我正在使用并试图通过add_子目录将其添加到我的CMake项目中。它似乎构建了解决方案,但实际上并没有生成LIB。我如何告诉sub_目录也制作和安装?我是否需要编辑该项目的CMake,或者可以从我的CMake项目(首选)中编辑它
此外,当我分别构建和安装LuaJIT时,它会安装到C:\Program Files(x86)。当我从我的项目中构建它时,我不希望这样。我希望它安装到我的projects\lib\LuaJIT目录(或者基本上就地构建)
安装主项目时,将安装add_subdirectory
标签: Cmake
sdl-2vtkhtc-viveopenvr
我正在尝试在HTC Vive设备上使用VTK 7.1.1和OpenVR。我已经使用CMake 3.3.0配置了VTK,并使用Visual Studio 2012构建了其解决方案。但是,当我试图通过CMake为VTK-7.1.1/Rendering/OpenVR中的示例文件生成解决方案时,它给出了以下错误:
找不到“OpenVR”提供的具有以下任何名称的包配置文件:
OpenVRConfig.cmake
openvr-config.cmake
除此之外,CMake坚持手动设置openvr\u d
标签: Cmake
java-native-interfaceimagej
我正在尝试为斐济/ImageJ开发一个依赖于本机库(JNI)的插件。
JNI库本身依赖于libtiff和fftw。在OSX和Linux上,我使用这个类,一切正常
在windows上,我在CMake包中包含了libtiff和fftw的二进制版本,并设法将JNI库与之链接(静态或动态)。但是,生成的JNI模块不包括libtiff或fftw,当我尝试使用NativeUtils.loadLibraryFromJar加载JNI库时,我得到一个错误。当我在.jar中包含依赖的.dll时也是如此,因为它们不是
我正在尝试使用CMake的find_package()命令链接库(SFML)。如果我将SFML的库直接放在/usr/local/lib文件夹中,所有这些都可以正常工作,但一旦我创建了一个子文件夹(出于组织目的),就会出现以下错误:
CMake Error at cmake_modules/FindSFML.cmake:355 (message):
Could NOT find SFML (missing: SFML_GRAPHICS_LIBRARY SFML_WINDOW_LIBRARY
这是我的项目树格式:
├── cmake
│ └── CopyHeaderFiles.cmake
├── CMakeLists.txt
├── common
│ ├── CMakeLists.txt
│ ├── Headers
│ │ ├── CMakeLists.txt
│ │ ├── criticalmessage.h
│ └── Src
│ ├── CMakeLis
我有一个带有自己图层的Yocto BSP,其中包括一个autotools3rdy零件库()。
我的应用程序“.bb”文件有以下几行,说明需要libcoap:
DEPENDS += "libcoap"
RDEPENDDS_${PN} += " libcoap libcoap-dev libcoap-devstatic"
我可以看到库文件正在复制到sysroot:
$ ls -l /projects/oe-core/build/tmp-glibc/work/armv7at2hf-neon-angs
CMAKE\uu COMPILE\u对象是设置编译规则的变量
set("<CMAKE_MY_COMPILER> <DEFINES> <INCLUDES> -o <OBJECT> -c <FLAGS> <SOURCE>")
如何在生成步骤中从对象名称中删除源文件扩展名my?设置以下变量:
set(CMAKE\uu输出\u扩展\u替换1)
我在文件cmakelanginfo.cmake中为一种新的cmake语言设置了此参数。设
我使用的是cmake版本3.12.1,希望构建一个使用ZLIB的静态可执行文件。我的机器上既有静态库(libz.a)也有共享库(libz.so)。如何让find_package(ZLIB)返回静态版本?也许还有另一种方法可以找到libz.a
我目前的解决方法是指定:
SET(CMAKE_EXE_LINKER_FLAGS“${CMAKE_EXE_LINKER_FLAGS}-静态”)
然后:
target\u link\u库(my\u二进制z lib1 lib2)
欢迎对这种方法提出批评 考虑到fi
我无法让CMake的include()语句识别CMake\u模块\u路径。我希望这样做:
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
include(Foo.cmake)
使用此样式的目录树:
.
├── cmake
│ └── Foo.cmake
├── CMakeLists.txt
但是,我得到了一个错误:
include could not find load file:
Foo.cmake
我试图从源代码编译。
我在生成目录中运行了cmake..,但出现以下错误
我需要安装哪些软件包?(Ubuntu 18.04)
克隆回购协议时,您是否选择了正确的分支机构?
默认分支是gazebo11,因此如果您希望安装gazebo9,它必须如下所示:
hg clone https://bitbucket.org/osrf/gazebo -r gazebo9 /tmp/gazebo
您是否遵循了其中任何一项?是的,我按照这些说明在Ubuntu上从源代码安装Gazebo,并且在第3步“cmake.
如果我尝试构建cURL,它将显示以下输出:
Checking Build System
Building Custom Rule C:/CPP/Projects/WebsiteGuardian/CMakeLists.txt
LINK : warning LNK4098: Standardbibliothek "LIBCMTD" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Biblioth
ek verwenden. [C
我正在为我的项目编写CMake脚本,我正在尝试调用另一个编译器来获取文件子集,该文件子集位于项目源代码树的子目录下
我发现我可以使用ExternalProject\u Add命令来完成
这是我代码的一部分
根目录CMakeLists.txt
set(CMAKE_DISABLE_SOURCE_CHANGES ON)
set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
add_subdirectory(src)
...
include(ExternalProject)
我的CMake版本是3.18.0-rc2。在我的项目的CMakeLists.txt中,我有以下几行代码,它们用于提高警告级别,并将所有警告视为错误:
if(MSVC)
add_compile_options(/W4 /WX)
add_link_options(/W4 /WX)
else()
add_compile_options(-Wall -Wextra -pedantic -Werror -Wl,--fatal-warnings)
endif()
到目前为止,我只能
我刚刚继承了一大堆用CMake构建的项目。我没有CMake知识,我怀疑之前的维护人员也有同样的知识
我需要在项目之间强制构建顺序。过去是:
=== BUILD TARGET foo1 OF PROJECT bar ...
=== BUILD TARGET foo2 OF PROJECT bar ...
=== BUILD TARGET foo3 OF PROJECT bar ...
我必须添加一个项目和依赖项(在不同的目标中,而不是上面的目标中)。但代码中充满了错误
# don't chang
我和cmake有一个小项目。我构建了一个库和一个可执行文件。在开发机器上,我还需要一个不能在其他机器/环境上构建的可执行文件
e、 g:
有人知道怎么处理吗?我不想总是构建单元测试 这很简单:通过引入选项/变量来保护可执行文件的创建
if (DEFINED WITH_UNIT_TEST)
find_library (CUNIT_LIB cunit)
include_directories (${Cunit_INCLUDE_DIRS} "${PROJECT_SOURCE_DIR}/src"
该项目是一个cmake项目,使用conan作为包管理器,它依赖于boost、qt5 libs。我想从预构建的二进制文件创建一个rpm包,但是rpmbuild命令在verify elf阶段失败,并出现许多类似错误:
verify-elf: ERROR: ./libMyLib.so: RPATH contains illegal absolute entry "/home/user/conan/boost/1.71.0/abcdef/lib": /home/user/dev/my
我正在我的一台机器上安装一个新的CentOS 8,并尝试构建hardinfo包(请参阅)。按照说明,我在源代码树中构建了一个空的构建目录,在那里进行了更改,并运行了“cmake..”,但发生了以下情况:
$ cmake ..
-- The C compiler identification is GNU 8.3.1
-- The CXX compiler identification is GNU 8.3.1
-- Check for working C compiler: /usr/bin/c
我有一个CMAKE文件,我正在定义一个宏,我想使用这个宏作为条件
我有一个示例cmake文件,我将LIT\u indicator定义为1或0,并希望在IF语句中使用其值来查找LIB
cmake_minimum_required(VERSION 3.14)
project(test)
set(CMAKE_CXX_STANDARD 17)
add_definitions(-DLIT_INDECATOR=1)
set(TEST_PRIFIX ../lib/internal/libtest)
标签: Cmake
c++17visual-studio-2019
我正在设置:
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
然而,在我的cmake中,在VisualStudio2019中,它没有正确设置标准并默认为C++14
如果我这样设置:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17")
set(CMAKE_CXX_STANDARD 1
编辑这是一个
使用Xcode 11(特别是Xcode 11.2.1),我过去可以使用以下命令交叉编译iOS项目:
cd /path/to/project
mkdir build
cd build
cmake .. -G Xcode -DCMAKE_SYSTEM_NAME=iOS \
"-DCMAKE_OSX_ARCHITECTURES=arm64;x86_64" \
-DCMAKE_XCODE_ATTRI
我有一个find_library()语句与下面的语句相匹配(这是基于):
find_library(SRTP_LIBRARIES名称srtp2所需路径${OPEN_SRC_INSTALL_LIB_PREFIX})
OPEN\u SRC\u INSTALL\u LIB\u前缀正确指向此库所在的位置。我可以直接观察到这一点。但是,这个find_library()调用失败,我不明白为什么会这样做
我认为cmake可能是先搜索其他路径,然后忽略我指定的路径,因此我也尝试使用NO\u DEFAULT\u
1 2 3 4 5 6 ...
下一页 最后一页 共 115 页