标签: cmake

cmake 'pkg_check_modules' 中的 'module' 代表什么?

我正在 GNU Radio 中构建某个模块。(我们称之为我的模块。)

GNU Radio 用于cmake构建和安装一个 my-module。

在项目中,我需要使用一个别人制作的模块。这可以是it++和其他 gnuradio 模块。我将使用 gnuradio 模块。(让我们称之为other-module。)

要在我的 gr 模块中使用其他模块,我需要使用find_package,pkg_check_modulesfind_library告诉“我将使用预先构建的模块”
并且pkg_check_modules(PC_ITPP itpp)可以成功检测到它++。
但我很难找到other-module. 正如我所说pkg_check_modules(PC_OTHER_MODULE other_module),它无法检测到模块。

我很好奇的是,moduleinpkg_check_modules(<PREFIX> <MODULE>)代表什么以及 cmake 如何以及在哪里找到给定模块?

当然,我认为它不是内核模块,因为我在内核模块列表中没有看到它++。那么,它们是 cmake 模块吗?我也不这么认为,因为cmake --help-module-list没有显示它++。

是否有一个特殊文件包含可以被 cmake 引用的模块列表?那么,是否应该it++在构建和安装步骤中在该文件中注册模块和其他库,以便 cmake 将其识别为模块?

cmake

0
推荐指数
1
解决办法
1977
查看次数

使用 cmake 将变量值传递给 make

我正在尝试做类似的事情

cmake -DUSE_FILES_FOR_INPUT=ON ..
Run Code Online (Sandbox Code Playgroud)

然后开始make编译我的文件-DUSE_FILES_FOR_INPUT=ON。但我没有得到它的=ON价值。似乎它应该写入 flags.make 文件,但它不是:

$ grep USE_FILES_FOR_INPUT source/CMakeFiles/myprogram.dir/flags.make
CXX_DEFINES = -DUSE_FILES_FOR_INPUT
Run Code Online (Sandbox Code Playgroud)

如果我手动更改该文件,-DUSE_FILES_FOR_INPUT=ON则一切正常。我怎样才能让 cmake 在 中添加值flags.make

我需要做的事情的另一种方法:我正在使用的变量的类型为 BOOL,因此它足以获得

CXX_DEFINES = -DUSE_FILES_FOR_INPUT我什么时候做cmake -DUSE_FILES_FOR_INPUT=ON ..CXX_DEFINES =什么时候做cmake -DUSE_FILES_FOR_INPUT=OFF ..

这可能吗?

c++ cmake

0
推荐指数
1
解决办法
3935
查看次数

CMake:在静态库上设置链接器标志,供消费者在链接时使用(Visual Studio)

我有以下情况:一个静态库MyStaticLib取决于 FFmpeg 项目(libavformat等)的几个库。

FFmpeg 库(不是由我)与“/SAFESEH:NO”选项链接,这意味着链接到它们的任何图像(通过它们的导入库)也必须与相同的选项链接(不这样做会使链接器因“LNK2026:模块对 SAFESEH 图像不安全”而中止)。

我已经尝试了所有我能想到的方法,但是我还没有找到一种方法可以将该选项附加到我的选项MyStaticLib中,从而使其传播给消费者。

这看起来很奇怪,因为 CMake 确实提供了将编译器选项传播给消费者的方法:target_compile_options()与该PUBLIC选项一起使用的命令正是这样做的。

链接器标志没有类似的功能吗?

c++ linker cmake visual-c++

0
推荐指数
1
解决办法
2475
查看次数

GLFW + CMake + Clion 许多未定义的参考

在这里完成 CMake Noob。我正在尝试在 Clion IDE 中使用 glfw 库,即使经过 2 天的谷歌搜索,我也不明白我错过了什么/做错了什么。

以下是详细信息:

操作系统:Windows 8 Pro 64 位

IDE:克里昂

制作工具:CMake

编译器:MinGW v3.21

错误日志:

"C:\Program Files (x86)\JetBrains\CLion 1.2.3\bin\cmake\bin\cmake.exe"--build C:\Users\PranayKarani\.CLion12\system\cmake\generated\185d1d8\185d1d8\Debug --target openGL -- -j 4
[ 50%] Linking CXX executable openGL.exe
CMakeFiles\openGL.dir/objects.a(main.cpp.obj): In function `key_callback':
E:/Pranay/BotX games/C++ projects/openGL/main.cpp:15: undefined reference to `glfwSetWindowShouldClose'
CMakeFiles\openGL.dir/objects.a(main.cpp.obj): In function `main':
E:/Pranay/BotX games/C++ projects/openGL/main.cpp:22: undefined reference to `glfwSetErrorCallback'
E:/Pranay/BotX games/C++ projects/openGL/main.cpp:24: undefined reference to `glfwInit'
E:/Pranay/BotX games/C++ projects/openGL/main.cpp:27: undefined reference to `glfwCreateWindow'
E:/Pranay/BotX games/C++ projects/openGL/main.cpp:30: undefined reference to `glfwTerminate' …
Run Code Online (Sandbox Code Playgroud)

c++ cmake glfw clion

0
推荐指数
1
解决办法
7125
查看次数

CMake 错误:命令 add_definitions() 不可编写脚本

有没有人遇到过这个错误?如果是这样,我该如何解决它或等效的方法是什么。

我正在运行 Ubuntu,代码创建了一个编译器定义列表,然后我只是遍历列表并添加每个定义。

set(COMPILER_DEF_LIST)
list(APPEND COMPILER_DEF_LIST_COMMON
 NUMBER_FAMILY_RESERVED_FIXED_OIDS=5
 CHILD_LIST_ELEMENTS_PER_BLOCK=10
 ...

FOREACH(compilerDefine ${COMPILER_DEF_LIST_COMMON})
add_definitions(-D${compilerDefine})
ENDFOREACH(compilerDefine)
Run Code Online (Sandbox Code Playgroud)

cmake

0
推荐指数
1
解决办法
4368
查看次数

cmake链接xlib目录c ++

我正在尝试编译一个使用 xlib 和 cmake 的 c++ 程序。但是,我在 cmake 文件中包含和链接 xlib 库时遇到问题。

这是我得到的错误。

 main.cpp:378: undefined reference to `XClearWindow'
 collect2: error: ld returned 1 exit status
 CMakeFiles/project1.dir/build.make:94: recipe for target 'project1' failed
 make[2]: *** [project1] Error 1
 CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/project1.dir/all' failed
 make[1]: *** [CMakeFiles/project1.dir/all] Error 2
 Makefile:83: recipe for target 'all' failed
 make: *** [all] Error 2
Run Code Online (Sandbox Code Playgroud)

当我只使用命令行编译时,它工作得很好。

我使用这个命令(g++ main.cpp -L/usr/X11R6/lib -lX11)

这是我的 cmake 文件。

cmake_minimum_required(VERSION 3.6)
project(project1)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

link_directories(/usr/X11R6/lib)

include_directories(/usr/share/X11)

set(SOURCE_FILES main.cpp)
add_executable(project1 ${SOURCE_FILES})
Run Code Online (Sandbox Code Playgroud)

c++ linux ubuntu cmake clion

0
推荐指数
1
解决办法
2899
查看次数

CMake 未将 boost 目录包含在其生成的项目中

我一直在尝试创建一个 CMake 项目,然后使用 Visual Studio 2015 编译它。但是,当我生成项目文件时,不包括 boost。这是 CMake 在生成时的相关输出:

Boost 版本:1.62.0
找到以下 Boost 库:
system
thread
chrono
date_time
atomic
配置 done
生成 done

而且路径都是正确的。CMake 应该把包含目录放在哪里,放到 VC++ 目录中?构建系统哪里出错了?

实际的 CMakeLists.txt 如下:

#MultiTracker Application
cmake_minimum_required (VERSION 3.1)
project(MultiTracker)

#Additional CMake search modules

#Require C++11
set (CMAKE_CXX_STANDARD 11)
message(STATUS "Generating Makefile for MultiTracker")

file(GLOB SRC_FILES *.cpp)
#Find and link boost
SET(Boost_USE_STATIC_LIBS   ON)
find_package(Boost REQUIRED system thread)

add_executable(MultiTracker ${SRC_FILES})
#Link internal libraries

#Link 3rd party libraries
target_link_libraries(MultiTracker ${Boost_LIBRARIES})

#The native OS thread library …
Run Code Online (Sandbox Code Playgroud)

c++ boost cmake visual-studio

0
推荐指数
1
解决办法
533
查看次数

VS 2010 和 CMake:“rc”不被识别为内部或外部命令

我正在尝试使用 VS 2010 和 CMake 在 Windows 10 - Home 上构建一个项目。我收到以下错误:

zutil.c  
lib -nologo -out:zlib.lib adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj  gzwrite.obj infback.obj inflate.obj inftrees.obj inffast.obj trees.obj uncompr.obj zutil.obj   

rc /dWIN32 /r /fozlib1.res ./win32/zlib1.rc   
'rc' is not recognized as an internal or external command,
operable program or batch file.   

NMAKE : fatal error U1077: 'rc' : return code '0x1'
Stop.  
*.dll   
The system cannot find the file specified.
        0 file(s) copied.  

Setting environment for using Microsoft Visual Studio 2010 …
Run Code Online (Sandbox Code Playgroud)

cmake visual-studio-2010

0
推荐指数
1
解决办法
8976
查看次数

如何在我的g ++编译器中满足C ++标准版本?

我知道C ++有标准而不是版本,因此,它们的发布由规范管理(例如C99,C ++ 11等)

C ++编译器具有版本,并且每个版本都可以支持多种c ++标准。

关于上述内容,我找到了我的g ++版本编译器,即7.2.0

? bgarcial [~] ? g++ --version
g++ (Ubuntu 7.2.0-8ubuntu3) 7.2.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

? bgarcial [~] ? 
Run Code Online (Sandbox Code Playgroud)

我的g ++编译器具有以下目录,我正在使用本机Makefile以C ++语言进行构建

? bgarcial [include/c++/7] ? pwd
/usr/include/c++/7

? bgarcial [include/c++/7] ?
Run Code Online (Sandbox Code Playgroud)

如何确定我的g ++编译器支持哪些C ++标准?

所述克++文档包括以下信息:

GCC支持1998年发布的原始ISO C ++标准以及2011和2014年的修订版。如果未提供C ++语言方言选项,则默认值为-std = gnu ++ …

c++ gcc g++ cmake

0
推荐指数
1
解决办法
1542
查看次数

包含&lt;experimental / filesystem&gt;之后,尚未声明'std :: filesystem'

我已经检查了有关c ++ 17下文件系统链接的很多问题,但仍然无法成功建立链接。我的main.cpp文件如下。

#include <experimental/filesystem>


int main(int argc, char** argv)
{
    std::string imageDirectory = "./image";;
    std::vector<std::string> imagePath;

    for (const auto& entry: std::filesystem::directory_iterator(imageDirectory))
    {
        imagePath.push_back(entry.path());
        std::cout << entry.path() << std::endl;
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

CMakeLists.txt的如下。

cmake_minimum_required(VERSION 3.8 FATAL_ERROR)

project(visual_hull LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
add_library(dataIO
        STATIC
            dataIO.hpp
            dataIO.cpp)

find_package(OpenCV REQUIRED core highgui imgproc)

target_link_libraries(dataIO ${OpenCV_LIBS})

add_executable(visual_hull main.cpp)

target_link_libraries(visual_hull PUBLIC dataIO
                                         stdc++fs)
Run Code Online (Sandbox Code Playgroud)

错误如下。

/home/SENSETIME/zhangshunkang/Downloads/programming/c++/visual_hull/main.cpp: In function ‘int main(int, char**)’:
/home/SENSETIME/zhangshunkang/Downloads/programming/c++/visual_hull/main.cpp:15:31: error: ‘std::filesystem’ has not been declared
  for (const auto& …
Run Code Online (Sandbox Code Playgroud)

c++ cmake c++17

0
推荐指数
3
解决办法
1754
查看次数

标签 统计

cmake ×10

c++ ×7

clion ×2

boost ×1

c++17 ×1

g++ ×1

gcc ×1

glfw ×1

linker ×1

linux ×1

ubuntu ×1

visual-c++ ×1

visual-studio ×1

visual-studio-2010 ×1