我想从 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)
这段代码不起作用。有谁知道这样做的好方法?
我有一个复杂的 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 如何find_library处理“libFOO.so.3.2”中的版本号?有些库具有从 libFOO.so 到正确版本的符号链接,有些则没有。
当我只使用时,CMake 是否找到没有符号链接的库find_library(NAMES FOO)?
我应该怎么做才能帮助 CMake 找到合适的库?
-Wall特别是启用我不想要的警告-Wunknown-pragmas.如何告诉GCC在启用后禁止这些警告-Wall?
我正在尝试从http://www.cmake.org/cmake-tutorial/学习CMake .我不遵循set语法的工作原理.例如,从本教程中,
set (EXTRA_LIBS ${EXTRA_LIBS} MathFunctions)
Run Code Online (Sandbox Code Playgroud)
我可以理解,这里我们要分配MathFunctions给EXTRA_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之间有什么区别?
当我输入这个命令时:
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) 我可以通过我的int变量值获取枚举类变体吗?现在,我有这样的枚举类:
enum class Action: unsigned int {
REQUEST,
RETURN,
ISSUANCE
};
Run Code Online (Sandbox Code Playgroud)
我需要从数据库值中获取此值(数据库返回unsigned int).如何最优化呢?现在,我只是为每个变体使用开关,但这是一个愚蠢.拜托,解释一下!
我正在尝试在项目中使用 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 程序Nmake。我启动构建过程
cmake -G "NMake Makefiles" ..
cmake --build buildDir
Run Code Online (Sandbox Code Playgroud)
并Nmake开始编译。问题是构建过程在第一个编译错误处停止。我想构建所有可以编译的程序。我知道有/K命令行 选项Nmake,但是如果我只能访问CMakeLists.txt和,我怎么能传递这个选项cmake.exe?如何在 CMake 的构建工具模式下将参数传递给构建工具?
鉴于我想改进我的 C++ 代码库。第一步是将函数标记为constexpr满足所用 C++ 标准的要求。有没有办法判断一个函数是否可以被标记constexpr?
我想出的唯一方法是添加constexpr到单个实例,运行编译器,并检查它是否抱怨它不是constexpr。重复直到检查完所有实例。这种方法无法扩展。