我正在尝试从与Jetson TX1(Ubuntu 16.04)接口的 Basler 相机访问图像。我正在OpenCV-C++与Pylon图书馆一起使用这样做。我正在尝试链接Pylonusing cmake。我有以下CMakeLists.txt文件:
cmake_minimum_required(VERSION 3.5.1)
project(basler_test)
set(CMAKE_CXX_STANDARD 14)
#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl, -E")
find_package(OpenCV REQUIRED)
include_directories(/opt/pylon5/include)
link_directories(/opt/pylon5/lib64)
add_executable(basler_test basler_test.cpp)
target_link_libraries(basler_test ${OpenCV_LIBS} /opt/pylon5/include/pylon/PylonIncludes.h)
Run Code Online (Sandbox Code Playgroud)
该cmake .命令工作正常,但当我这样做时make,它给出:
fatal error: pylon/Platform.h: No such file or directory
compilation terminated
我检查了上面的文件,它确实与PylonIncludes.h. 所以,我相信这个错误是因为在CMakeLists.txt. 我没有足够的经验来创建它们来确定问题所在。请帮忙。
这是源文件的相关部分: basler_test.cpp
//This is a test program to check the functionality of Basler dart daA2500-14uc Camera.
#define saveImages 0
#define recordVideo 1 …Run Code Online (Sandbox Code Playgroud) 我是 CMake 的新手,现在对我来说这一切都像是黑魔法。我令牌的例子来自这里!如何正确包含 Lua(5.1) lib 并将其与 CMake 链接?
示例在手工编译时工作,如
$gcc -W -Wall -g -o main main.c -I/usr/local/include -L/usr/local/lib/lua/5.1 -llua
#include <stdio.h>
#include <string.h>
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
int main(void) {
puts("lua interpretor:");
char buff[256];
int error;
lua_State *L = luaL_newstate(); /* opens Lua */
luaL_openlibs(L); /* opens the standard libraries */
while (fgets(buff, sizeof(buff), stdin) != NULL) {
error = luaL_loadbuffer(L, buff, strlen(buff), "line") ||
lua_pcall(L, 0, 0, 0);
if (error) {
fprintf(stderr, "%s", lua_tostring(L, -1)); …Run Code Online (Sandbox Code Playgroud) 我正在使用 cmake 生成多平台 C++ 项目的 Windows/VisualStudio 解决方案。
在项目的属性中有一个特定的条目(文件夹数据的简单路径),我希望 cmake 为我填写。此条目是由我无法修改的外部插件添加的。
填写 VS 项目属性中的选项会在MyAppExecutable.vcxproj文件中添加以下条目:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|PLATFORM'">
<AppDataFolder>D:\myappdata</AppDataFolder>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
我希望 cmakeAppDataFolder为我添加这个值。
它甚至会更好,如果它可以同时为所有可能的设置PLATFORM,以及是否在编译Release,Debug或任何其他。希望将其添加到内部<PropertyGroup Label="Globals">可以实现这一目标?
有没有办法让 cmake 在项目文件中设置这个值?
在我们的 Linux 应用程序中,我们使用一个预先加载了LD_PRELOAD.
我想为每个测试预加载相同的库。我们使用 CMake 作为构建工具。
我可以告诉 CMake 它应该LD_PRELOAD为每个执行的测试添加到环境中吗?
测试使用make test.
我有一个在 Ubuntu 上创建的 CMake 项目,我现在正在 Visual Studio 上加载它(用于双引导开发)。
该项目可以在这里看到:http : //github.com/KiloMikeCodesStuff/Gravity
下图显示了问题: 
注意左边我是如何清楚地在第 5 行设置断点的。当我运行它时,断点移动并在第 8 行停止。
我试过了:
在所有情况下,结果都是一样的。我在想可能有一些代码优化(因为我选择为 x64 版本构建,因为这些是我为 SFML 拥有的唯一 DLL)。
这会是罪魁祸首吗?如果是这样,我如何禁用优化(记住它是一个 CMake 项目,而不是一个典型的 VS 项目)?
尝试使用 编译我的项目时cmake .,变量CMAKE_INSTALL_LIBDIR为空,我不知道为什么。
我正在尝试发布以下内容(第 40 行):
install(TARGETS fpthread
EXPORT fpthread_config
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
CMake Error at CMakeLists.txt:40 (install):
install TARGETS given no LIBRARY DESTINATION for shared library target
"fpthread".
Run Code Online (Sandbox Code Playgroud)
发出以下结果为空字符串:
MESSAGE(STATUS ${CMAKE_INSTALL_LIBDIR})
Run Code Online (Sandbox Code Playgroud)
我已经尝试了 Cmake 3.5(通过包管理器安装)和 Cmake 3.11(最新版本,从源代码编译)。
我正在编写一个小型解析器,但是在使用 cmake 时遇到了问题。
我的目的是:flex Fl => F.cc,bison By => B.cc,my_program.cc + F.cc + B.cc => library
我的第一次尝试:
FIND_PACKAGE(FLEX REQUIRED)
if (FLEX_FOUND)
ADD_CUSTOM_TARGET(
flex_target
COMMAND ${FLEX_EXECUTABLE}
--header-file=${CMAKE_CURRENT_SOURCE_DIR}/F.h
--outfile=${CMAKE_CURRENT_SOURCE_DIR}/F.cc
${CMAKE_CURRENT_SOURCE_DIR}/F.l
COMMENT "Generating F.cc"
)
endif(FLEX_FOUND)
FIND_PACKAGE(BISON REQUIRED)
if (BISON_FOUND)
ADD_CUSTOM_TARGET(
bison_target
COMMAND ${BISON_EXECUTABLE}
--defines=${CMAKE_CURRENT_SOURCE_DIR}/B.h
--output=${CMAKE_CURRENT_SOURCE_DIR}/B.cc
${CMAKE_CURRENT_SOURCE_DIR}/B.y
COMMENT "Generating B.cc"
)
endif(BISON_FOUND)
add_library(my_library my_program.cc F.cc B.cc)
add_dependencies(my_library bison_target)
add_dependencies(my_library flex_target)
Run Code Online (Sandbox Code Playgroud)
一切都很好,除了每次运行 make 时都会调用 flex 和 bison 命令,甚至 Fl 和 By 文件都没有更改。
然后我尝试切换到使用 ADD_CUSTOM_COMMAND 而不是 ADD_CUSTOM_TARGET。
FIND_PACKAGE(FLEX REQUIRED)
if (FLEX_FOUND)
ADD_CUSTOM_COMMAND(
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/F.cc
SOURCE …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 gRPC 集成到现有项目中。它已经有包含安装的所有 gRPC 依赖项(ssl、c-ares、protobuf 和 zlib)的目录。我想在构建 gRPC 时使用它们,并将 gRPC 安装到同一目录中。我下载了 gRPC 存档(没有克隆位于 grpc/third_party/ 中的子模块),并尝试生成构建系统,用于构建 gRPC 并将其安装到我的目标文件夹中(使用 cmake)。
我使用了以下命令:
cmake -DCMAKE_INSTALL_PREFIX=$PREFIX -DgRPC_ZLIB_PROVIDER=package -DgRPC_PROTOBUF_PROVIDER=package -DgRPC_SSL_PROVIDER=package -DgRPC_CARES_PROVIDER=package
Run Code Online (Sandbox Code Playgroud)
并得到一个错误:
CMake Error at cmake/cares.cmake:34 (find_package):
Could not find a package configuration file provided by "c-ares" with any
of the following names:
c-aresConfig.cmake
c-ares-config.cmake
Add the installation prefix of "c-ares" to CMAKE_PREFIX_PATH or set
"c-ares_DIR" to a directory containing one of the above files. If "c-ares"
provides a separate development package or SDK, be sure …Run Code Online (Sandbox Code Playgroud) 如何设置自定义 CUDA 目录enable_language(CUDA)?
从 cmake 版本 3.8~ 开始,我可以使用enable_language(CUDA)命令。
在我的自定义 cmake 文件中,我设置CUDA_TOOLKIT_ROOT_DIR与 cuda 自定义目录相同(不是默认目录)。
但是当enable_language(CUDA)命令被调用时,cmake 默认模块会尝试在默认目录(c:\progrmafiles 中的某处)中找到 CUDA。
我不想让我的队友单独安装 CUDA 工具包。
所以我想在自定义目录中包含使用 CUDA 所需的所有组件和工具。
我怎样才能完成它?
目标环境信息
OS windows 7 x64 (only)
IDE visual studio 2013
cmake version 3.11.4
CUDA version 9.2
Run Code Online (Sandbox Code Playgroud) 我试图在我的项目中使用yaml-cpp。通过尝试以下名称,我花了半个小时才正确链接库。在我最终在这个文件中偶然发现它们之后,我解决了这个问题:
find_package(yaml-cpp REQUIRED)
include_directories(${YAML_INCLUDE_DIRS})
target_link_libraries(${YAML_CPP_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)
它有效,但我寻找那些的方式似乎很愚蠢。
如何远程找出包含变量的正确名称?可能是YAML_LIBS, YAML_LIBRARY, YAML_CPP_LIBRARIES, 没有标准吧?为大多数 C++ 库确定正确的 cmake 配置的适当方法是什么?
谢谢你。