考虑一个由一个库和一组使用该库的可执行文件组成的项目。一种简单的方法是add_library(),后接一系列对add_executable() target_link_libraries()。
这是大量的样板代码。如果能够执行类似的操作set(PROJECT_LINK_LIBS, lib1 ...)并让 CMake 删除额外的样板文件,那就太好了。
进一步思考这一点,我意识到我想要一个link_libraries行为类似于 的函数include_directories。我认为:
有这样的事吗?
这是我正在处理的数据帧的一部分.第一列代表年份,第二列代表月份,第三列代表当年该月份的观察数量.
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月,依此类推)来绘制我的模型.
由于以下警告:
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所以我做错了什么?
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) 我有以下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)
为什么?任何的想法?
我的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工作.
我刚开始使用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()功能的替代品,但我不确定是什么原因导致此错误发生.
我安装了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) 在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文件?
我关注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)