小编Tsy*_*rev的帖子

将库链接到 cmake 项目中的所有目标

考虑一个由一个库和一组使用该库的可执行文件组成的项目。一种简单的方法是add_library(),后接一系列对add_executable() target_link_libraries()

这是大量的样板代码。如果能够执行类似的操作set(PROJECT_LINK_LIBS, lib1 ...)并让 CMake 删除额外的样板文件,那就太好了。

进一步思考这一点,我意识到我想要一个link_libraries行为类似于 的函数include_directories。我认为:

  1. 在很多情况下会有用。
  2. 将导致干燥机 CMakeLists。
  3. 会鼓励更好的代码组织——会有一种自然的动力来组织文件夹、代码和可执行文件,使所有可执行文件都具有相同的依赖关系——当然是一种干净的做法。

有这样的事吗?

cmake

8
推荐指数
2
解决办法
5199
查看次数

几个月到整数R

这是我正在处理的数据帧的一部分.第一列代表年份,第二列代表月份,第三列代表当年该月份的观察数量.

2005 07    2
2005 10    4
2005 12    2
2006 01    4
2006 02    1
2006 07    2
2006 08    1
2006 10    3
Run Code Online (Sandbox Code Playgroud)

我有2000年到2018年的观察.我想对这些数据运行内核回归,所以我需要从日期类向量创建一个连续整数.例如,2000年1月将是​​1,2001年1月将是​​13,2002年1月将是​​25,依此类推.有了它,我将能够运行内核.后来,我需要翻译它(1将是2000年1月,2将是2000年2月,依此类推)来绘制我的模型.

r date

8
推荐指数
2
解决办法
197
查看次数

CMake生成器表达式未被评估

由于以下警告:

CMake Error at test/CMakeLists.txt:29 (get_target_property):
  The LOCATION property may not be read from target "my_exe".  Use the
  target name directly with add_custom_command, or use the generator
  expression $<TARGET_FILE>, as appropriate.
Run Code Online (Sandbox Code Playgroud)

这是来自这样的行的结果:

get_target_property(my_exe_path my_exe LOCATION)
Run Code Online (Sandbox Code Playgroud)

像在文档中推荐的那样,我尝试使用这样的生成器表达式:

add_executable(my_exe_path main.cpp)
message("path to executable: $<TARGET_FILE:my_exe_path>")
Run Code Online (Sandbox Code Playgroud)

但是TARGET_FILE没有被评估

path to executable: $<TARGET_FILE:my_exe>
Run Code Online (Sandbox Code Playgroud)

我正在使用CMake 3.4并添加cmake_minimum_required(VERSION 3.4)到我的CMakeLists.txt所以我做错了什么?

cmake

7
推荐指数
2
解决办法
6969
查看次数

CMake:错误要求内部CMake变量未设置

Windows 10,CMake 3.7.0,CUDA v8.0

CMake立即找不到任何东西.我的CMake文件看起来如此:

cmake_minimum_required(VERSION 3.0)
find_package(CUDA REQUIRED)
#...
#(other stuff here)
Run Code Online (Sandbox Code Playgroud)

作为输出,我得到:

CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_FIND_LIBRARY_PREFIXES
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_FIND_LIBRARY_SUFFIXES
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_FIND_LIBRARY_PREFIXES
CMake Error: Error required internal CMake …
Run Code Online (Sandbox Code Playgroud)

windows cmake

7
推荐指数
1
解决办法
5228
查看次数

cmake find_path无法按预期工作

我有以下CMake脚本,它的工作原理:

find_path(
  GLES_SDK_INCLUDE_DIR
  NAMES "GLES2/gl2.h"
  PATHS "${CMAKE_FRAMEWORK_PATH}/include")
Run Code Online (Sandbox Code Playgroud)

但是这个回归-NOTFOUND:

find_path(
  GLES_SDK_INCLUDE_DIR
  NAMES "gl2.h"
  PATHS "${CMAKE_FRAMEWORK_PATH}/include/GLES2")
Run Code Online (Sandbox Code Playgroud)

为什么?任何的想法?

cmake

7
推荐指数
1
解决办法
7532
查看次数

CMake错误:'目标不是由这个项目构建的'

我的CMakeLists.txt档案是:

cmake_minimum_required(VERSION 3.7)
project(OpenCV_Basics)

set(CMAKE_CXX_STANDARD 11)

set(SOURCE_FILES main.cpp)

find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_LIBS})
target_link_libraries(OpenCV_Basics )

add_executable(OpenCV_Basics ${SOURCE_FILES})
Run Code Online (Sandbox Code Playgroud)

当我试图编译main.cpp时,我被困了.

CMake Error at CMakeLists.txt:10 (target_link_libraries):
  Cannot specify link libraries for target "OpenCV_Basics" which is not 
built
  by this project.
Run Code Online (Sandbox Code Playgroud)

怎么了?

我在Mac上的Clion工作.

c++ opencv cmake clion

7
推荐指数
2
解决办法
9672
查看次数

MinGW g ++:使用to_string时vsnprintf的多个定义

我刚开始使用MinGW for Windows.尝试使用时创建可执行文件

g++ a.cpp -o a.exe -std=c++14

对于以下代码:

#include <string>

using namespace std;

int main()
{
    string x = to_string(123);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

C:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../libmingwex.a(vsnprintf.o):(.text+0x0): multiple definition of vsnprintf
C:\Users\..\Local\Temp\cc4sJDvK.o:c:/mingw/include/stdio.h:426: first defined here
collect2.exe: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

导致此错误的根本原因是什么?如何让它消失?虽然我可以轻松找到to_string()功能的替代品,但我不确定是什么原因导致此错误发生.

windows gcc mingw g++ c++11

7
推荐指数
4
解决办法
7530
查看次数

木偶沙箱:没有可用的沙箱

我安装了Puppeteer以便在生成pdf / minuatures时使用它,但无法激活和配置Chrome Linux Sandbox。总是相同的错误消息:

(节点:46)UnhandledPromiseRejectionWarning:错误:无法启动chrome![1208 / 055442.253403:FATAL:zygote_host_impl_linux.cc(116)]没有可用的沙箱!更新您的内核,或查看https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox_development.md,以获取有关使用SUID沙箱进行开发的更多信息。如果您想过着危险的生活并且需要立即解决,则可以尝试使用--no-sandbox。

我遵循了官方文档中提到的步骤,但是没有成功

# cd to the downloaded instance
cd <project-dir-path>/node_modules/puppeteer/.local-chromium/linux-<revision>/chrome-linux/
sudo chown root:root chrome_sandbox
sudo chmod 4755 chrome_sandbox
# copy sandbox executable to a shared location
sudo cp -p chrome_sandbox /usr/local/sbin/chrome-devel-sandbox
# export CHROME_DEVEL_SANDBOX env variable
export CHROME_DEVEL_SANDBOX=/usr/local/sbin/chrome-devel-sandbox
Run Code Online (Sandbox Code Playgroud)

sandbox linux-kernel puppeteer

7
推荐指数
1
解决办法
973
查看次数

如何在CMake中添加"-l"(ell)编译器标志

在Ubuntu 16上工作

我使用g++ main.cpp -lpq命令编译我的小项目.现在我使用Clion并想做同样的事情g++.但我不能在cmake文件中添加编译器标志并得到编译错误.

cmake_minimum_required(VERSION 3.5.1)
project(day_g)

set(CMAKE_CXX_FLAGS "-lpq")

add_definitions(-lpq)

message("CMAKE_CXX_FLAGS is ${CMAKE_CXX_FLAGS}")

set(CMAKE_CXX_STANDARD 11)

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

另外,我只运行cmake文件并CMAKE_CXX_FLAGS使用-lpq标志.

CMAKE_CXX_FLAGS is -lpq
-- Configuring done
-- Generating done
Run Code Online (Sandbox Code Playgroud)

如何正确地将编译器标志添加到cmake文件?

c++ cmake clion

6
推荐指数
1
解决办法
3794
查看次数

Selenium'Chrome无法启动:退出异常'错误

我关注https://github.com/RobCherry/docker-chromedriver/blob/master/Dockerfile作为示例,我的docker文件中包含以下内容:

RUN CHROMEDRIVER_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE` && \
    mkdir -p /opt/chromedriver-$CHROMEDRIVER_VERSION && \
    curl -sS -o /tmp/chromedriver_linux64.zip http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip && \
    unzip -qq /tmp/chromedriver_linux64.zip -d /opt/chromedriver-$CHROMEDRIVER_VERSION && \
    rm /tmp/chromedriver_linux64.zip && \
    chmod +x /opt/chromedriver-$CHROMEDRIVER_VERSION/chromedriver && \
    ln -fs /opt/chromedriver-$CHROMEDRIVER_VERSION/chromedriver /usr/local/bin/chromedriver

RUN curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
    echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list && \
    apt-get -yqq update && \
    apt-get -yqq install google-chrome-stable && \
    rm -rf /var/lib/apt/lists/*

ENV DISPLAY :20.0
ENV …
Run Code Online (Sandbox Code Playgroud)

selenium selenium-chromedriver

6
推荐指数
1
解决办法
7262
查看次数