小编usr*_*567的帖子

删除变量的特定部分

我想从 CMake 变量中删除特定的库。

假设LIB包含变量“A;B;C”的值,我知道set可以像这样添加另一个变量“D”的内容

set(LIB ${LIB};D)
Run Code Online (Sandbox Code Playgroud)

但是我尝试从LIB以下内容中删除“C”

unset(LIB C)
Run Code Online (Sandbox Code Playgroud)

这段代码不起作用。有谁知道这样做的好方法?

cmake

5
推荐指数
1
解决办法
7232
查看次数

从 cmake 项目运行 npm 命令

我有一个复杂的 C++ 项目。现在我将 c++ node.js 插件添加到我基于 CMake 的项目中。我想用整个项目构建这个插件,所以我需要分别修改cmake文件。在我的根 cmake 文件中,我执行了以下操作:

add_subdirectory(nodejsaddon)
add_custom_target (
npm-target
COMMAND cd nodejsaddon && npm install node-addon-api && npm run build
)
Run Code Online (Sandbox Code Playgroud)

nodejsaddon- 包含我的插件源和相应的 .gyp 和 .json 文件的文件夹的名称。但是,当我运行时,cmake ..\\testproj\\ -G "Visual Studio 15 Win64" -T "v140, host=x64 我在 nodejsaddon 文件夹中看不到 npb 构建结果。我做错了什么?如何让npm在nodejsaddon文件夹中生成构建文件?

cmake node.js npm

5
推荐指数
1
解决办法
2349
查看次数

find_library 如何处理版本号?

CMake 如何find_library处理“libFOO.so.3.2”中的版本号?有些库具有从 libFOO.so 到正确版本的符号链接,有些则没有。

当我只使用时,CMake 是否找到没有符号链接的库find_library(NAMES FOO)
我应该怎么做才能帮助 CMake 找到合适的库?

cmake

5
推荐指数
1
解决办法
1596
查看次数

gcc -Wall但是压制-Wunknown-pragmas

-Wall特别是启用我不想要的警告-Wunknown-pragmas.如何告诉GCC在启用后禁止这些警告-Wall

gcc

4
推荐指数
1
解决办法
2354
查看次数

CMake中的"set"语法

我正在尝试从http://www.cmake.org/cmake-tutorial/学习CMake .我不遵循set语法的工作原理.例如,从本教程中,

set (EXTRA_LIBS ${EXTRA_LIBS} MathFunctions)
Run Code Online (Sandbox Code Playgroud)

我可以理解,这里我们要分配MathFunctionsEXTRA_LIBS变量.但令我困惑的是我们想拥有的原因EXTRA_LIBS ${EXTRA_LIBS}.为什么不呢

set (EXTRA_LIBS MathFunctions)
Run Code Online (Sandbox Code Playgroud)

而且,我用以下代码测试

set (VALUE_1 "value 1")  # A
set (VALUE_2 ${VALUE_2} "value 2")  # B

message("value 1:" ${VALUE_1})
message("value 2:" ${VALUE_2})
Run Code Online (Sandbox Code Playgroud)

在这种情况下,#A和#B都产生相同的结果格式.

所以我的问题是#A和#B之间有什么区别?

syntax set cmake

4
推荐指数
1
解决办法
644
查看次数

找不到“Eigen3”的 CMake 包配置文件

当我输入这个命令时:

cd /Users/mona/ros_catkin_ws/build_isolated/pcl_ros && /Users/mona/ros_catkin_ws/install_isolated/env.sh cmake /Users/mona/ros_catkin_ws/src/perception_pcl/pcl_ros -DCATKIN_DEVEL_PREFIX=/Users/mona/ros_catkin_ws/devel_isolated/pcl_ros -DCMAKE_INSTALL_PREFIX=/Users/mona/ros_catkin_ws/install_isolated -DCMAKE_BUILD_TYPE=Release -G 'Unix Makefiles'
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

-- Boost version: 1.58.0
-- Found the following Boost libraries:
--   system
--   filesystem
--   thread
CMake Error at CMakeLists.txt:7 (find_package):
  By not providing "FindEigen3.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "Eigen3", but
  CMake did not find one.

  Could not find a package configuration file provided by "Eigen3" with any
  of the following names:

    Eigen3Config.cmake
    eigen3-config.cmake

  Add …
Run Code Online (Sandbox Code Playgroud)

cmake ros osx-mavericks

4
推荐指数
1
解决办法
1万
查看次数

C++ 11如何通过int值获取枚举类值?

我可以通过我的int变量值获取枚举类变体吗?现在,我有这样的枚举类:

enum class Action: unsigned int {
REQUEST,
RETURN,
ISSUANCE
};
Run Code Online (Sandbox Code Playgroud)

我需要从数据库值中获取此值(数据库返回unsigned int).如何最优化呢?现在,我只是为每个变体使用开关,但这是一个愚蠢.拜托,解释一下!

enums c++11

4
推荐指数
2
解决办法
6193
查看次数

如何在 CMake 中链接第三方库 (LibUSB)

我正在尝试在项目中使用 LibUSB。但是,每当我尝试使用基本的 libUSB 函数时,都会出现以下错误:

...src/main/main.cpp.o: In function `main':
...src/main/main.cpp:10: undefined reference to `libusb_init'
...src/main/main.cpp:11: undefined reference to `libusb_set_debug'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

安装了 LibUSB-devel 包(我在 Fedora 22 上)并且我的 IDE KDevelop 找到并识别标头,一旦您添加了 import 语句,它就会提供 LibUSB 代码完成。我的 IDE 或 CMake(我的构建系统)中没有任何自定义包含行,所以我想知道我需要做什么才能让 CMake 找到 LibUSB 标头。

这是 的内容main.cpp,以防万一我搞砸了:

#include <iostream>
#include <libusb-1.0/libusb.h>

int main(int argc, char **argv) {
      libusb_init(NULL);
      libusb_set_debug(NULL, LIBUSB_LOG_LEVEL_WARNING);

      /*snip*/

      std::cout << "Hello, world! PTPID="  << std::endl;
      return 0;
}
Run Code Online (Sandbox Code Playgroud)

以下是CMakeLists.txt
../

cmake_minimum_required(VERSION 2.8.11)
set(CMAKE_CXX_FLAGS …
Run Code Online (Sandbox Code Playgroud)

c++ cmake linker-errors

4
推荐指数
2
解决办法
1万
查看次数

在 CMake 的构建工具模式下传递参数

我有一组要编译的小型 C 程序Nmake。我启动构建过程

cmake -G "NMake Makefiles" ..

cmake --build buildDir
Run Code Online (Sandbox Code Playgroud)

Nmake开始编译。问题是构建过程在第一个编译错误处停止。我想构建所有可以编译的程序。我知道有/K命令行 选项Nmake,但是如果我只能访问CMakeLists.txt和,我怎么能传递这个选项cmake.exe?如何在 CMake 的构建工具模式下将参数传递给构建工具?

build cmake

4
推荐指数
1
解决办法
1916
查看次数

有没有办法检测可以标记为“constexpr”的函数?

鉴于我想改进我的 C++ 代码库。第一步是将函数标记为constexpr满足所用 C++ 标准的要求。有没有办法判断一个函数是否可以被标记constexpr

我想出的唯一方法是添加constexpr到单个实例,运行编译器,并检查它是否抱怨它不是constexpr。重复直到检查完所有实例。这种方法无法扩展。

相关:我们应该尽可能使用 constexpr 吗?

c++ constexpr

4
推荐指数
1
解决办法
174
查看次数

标签 统计

cmake ×7

c++ ×2

build ×1

c++11 ×1

constexpr ×1

enums ×1

gcc ×1

linker-errors ×1

node.js ×1

npm ×1

osx-mavericks ×1

ros ×1

set ×1

syntax ×1