小编usr*_*567的帖子

Geant4 找不到 Expat 库

我正在尝试在 Linux Mint 15 上安装 Geant4 10.00。我在我创建的目录中有解压的 geant4 文件 geant4.10.00.p01:

/home/mickmau5/Geant4

以及所需的构建文件geant4.10.00-build。该站点完成安装过程http://goo.gl/nzxpQG。我在冗长的 cmake 命令部分并收到此错误

mickmau5@linuxmint ~/Geant4/geant4.10.00-build $ cmake -DCMAKE_INSTALL_PREFIX=/home/mickmau5/Geant4/geant4.10.00.p01-install /home/mickmau5/Geant4/geant4.10.00.p01
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (message):
  Could NOT find EXPAT (missing: EXPAT_LIBRARY EXPAT_INCLUDE_DIR)
Call Stack (most recent call first):
  /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:291 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-2.8/Modules/FindEXPAT.cmake:50 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  cmake/Modules/Geant4OptionalComponents.cmake:71 (find_package)
  CMakeLists.txt:78 (include)


-- Configuring incomplete, errors occurred!
Run Code Online (Sandbox Code Playgroud)

看来我应该下载一些东西了。

谢谢你的帮助!

installation configuration

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

如何将std = c ++ 11标志添加到clang-cl?

我试图用Windows下的clang-cl编译一个C++ 11程序.Clang-cl是clang的包装器,与cl(Visual Studio编译器)更兼容.我尝试添加-std=c++11/std=c++11无一不遭到拒绝.这并不奇怪,因为cl没有C++ 11标志.但我不能使用clang-cl的C++ 11功能.

如何在clang-cl中启用C++ 11支持?

windows clang compiler-flags c++11

3
推荐指数
1
解决办法
2141
查看次数

Doxygen 没有为函数添加文档

Doxygen 没有在此类中添加我的任何成员函数的文档:

#ifndef SET_H_
#define SET_H_

/** @file */

/**
 * A mathematical set
 */
class Set
{
    virtual ~Set();

    /**
     * The countability of this set
     * @returns Whether this set is a countable one or not.
     */
    virtual bool isCountable();

    ...
}

#endif /* SET_H_ */
Run Code Online (Sandbox Code Playgroud)

它可以很好地生成类文档,但即使我设置EXTRACT_ALL为 YES,也不会生成函数文档。你知道为什么会这样吗?

c++ doxygen

3
推荐指数
1
解决办法
5854
查看次数

无法识别CMake命令

我已经安装了CMake和cmake.exe C:\Program Files (x86)\CMake\bin 但是当我运行call cmake %CMAKE_BUILD_OPTIONS%bat文件时,我收到一条错误消息

'cmake'不被识别为内部或外部命令,可操作程序或批处理文件.

我应该在环境变量中设置此路径吗?

windows cmake

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

CMake,多个目标(asan tsan ..),无需重新编译所有内容

目标 我想定义几个目标:

  • make msan:用clang和内存清理程序编译代码
  • make tsan:使用线程清理程序使用clang编译代码
  • make:使用gcc编译代码

并能够轻松地在它们之间切换.例如,我不希望每次切换重建我的所有对象,(我将不得不在第一次这样做,但后来如果我修改文件,我做了然后制作asan它应该只重新编译这个文件对于每个目标)

到目前为止我做了什么

我已经设法从根目录创建这些目标,但每次我必须做一个make clean并重新编译.

option(CLANG_MSAN "Enable Clang memory sanitizer" OFF)
if (CLANG_MSAN)
    set (CMAKE_CXX_FLAGS "-g -fsanitize=address -fno-omit-frame-pointer")
endif()

add_custom_target(asan
    COMMAND ${CMAKE_COMMAND}
    -DCLANG_MSAN=ON
    -DCMAKE_CXX_COMPILER=clang++
    -DCMAKE_C_COMPILER=clang)
Run Code Online (Sandbox Code Playgroud)

是否有可能用CMake做这样的事情?

cmake target

3
推荐指数
1
解决办法
1824
查看次数

CLion 和远程标头

我在尝试做一些看似微不足道的事情时遇到了很多麻烦。我想在 docker 容器中安装一些库以在我的项目中使用(将其视为任何其他 VM),但使用主机内的 IDE 实际针对它进行开发。

在这种情况下,直接依赖有些作用,但它们的常见对应项(如 boost 等)缺少 IDE 中的头文件,因此即使程序编译,我也会在 IDE 中遇到一堆错误和缺少头文件。

这是在项目中使用 nghttp2 作为依赖项的示例 CMake 文件:

cmake_minimum_required(VERSION 3.2)
project(deptest)

set(CMAKE_CXX_STANDARD 11)

################ hidapi

set(NGHTTP2_ROOT ${CMAKE_BINARY_DIR}/vendor/nghttp2)
set(NGHTTP2_LIB_DIR ${NGHTTP2_ROOT}/bin/lib)
set(NGHTTP2_INCLUDE_DIR ${NGHTTP2_ROOT}/bin/include)

include(ExternalProject)

ExternalProject_Add(nghttp2_dep
                    PREFIX ${NGHTTP2_ROOT}
                    GIT_REPOSITORY "https://github.com/nghttp2/nghttp2.git"
                    GIT_TAG "0641d314a62fc2f9ede5cbb487895236da4ae4f4"
                    UPDATE_COMMAND ""
                    PATCH_COMMAND ""
                    BINARY_DIR ${NGHTTP2_ROOT}/src/nghttp2
                    SOURCE_DIR ${NGHTTP2_ROOT}/src/nghttp2
                    INSTALL_DIR ${NGHTTP2_ROOT}/bin
                    CONFIGURE_COMMAND ./configure --prefix=<INSTALL_DIR> --enable-asio-lib
                    BUILD_COMMAND make
                    BUILD_BYPRODUCTS ${HIDAPI_LIB_DIR}/libnghttp2.a)

# hidapi requires an initial execution of "./bootstrap" to run autoreconf
ExternalProject_Add_Step(nghttp2_dep
                         bootstrap
                         COMMAND autoreconf -i && automake && autoconf
                         DEPENDEES download
                         DEPENDERS …
Run Code Online (Sandbox Code Playgroud)

remote-access clion

3
推荐指数
1
解决办法
1357
查看次数

带有cmake的架构x86_64的1个重复符号

我正在尝试使用mac上的cmake编译测试类.当我运行cmake和make命令时,我最终得到了这个错误:

duplicate symbol _main in:
    CMakeFiles/Carm.dir/CMakeFiles/3.7.0/CompilerIdCXX/CMakeCXXCompilerId.cpp.o
    CMakeFiles/Carm.dir/test.cpp.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [Carm] Error 1
make[1]: *** [CMakeFiles/Carm.dir/all] Error 2
make: *** [all] Error 2
Run Code Online (Sandbox Code Playgroud)

告诉我在main中有一个重复的符号.当我单独使用g ++时,这段代码可以完美编译.

car.h

#ifndef CAR_H
#define CAR_H

#include <string>

using namespace std;

namespace test {
    class Car {
    private:
            string model;
            int hp;
            int speed;

    public:
            Car(string n_model, int n_hp);
            string getModel();
            int getHp();
            int getSpeed();

    }; …
Run Code Online (Sandbox Code Playgroud)

c++

3
推荐指数
1
解决办法
1993
查看次数

在FindXXX.cmake的XXX_INCLUDE_DIRS或XXX_LIBRARIES中指定多个路径

考虑以下 a 的示例FindXXX.cmake

find_path(XXX_INCLUDE_DIR NAMES XXX/XXX.h)
find_path(XXXYYY_INCLUDE_DIR NAMES YYY.h)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(XXX DEFAULT_MSG
        XXX_INCLUDE_DIR XXXYYY_INCLUDE_DIR)

set(XXX_INCLUDE_DIRS "${XXX_INCLUDE_DIR} ${XXXYYY_INCLUDE_DIR}")
Run Code Online (Sandbox Code Playgroud)

正如本例中所示,XXX_INCLUDE_DIRS是一个中间有空格的字符串,因此,当添加到CMakeLists.txtusing中时

 target_include_directories(a PRIVATE ${XXX_INCLUDE_DIRS})
Run Code Online (Sandbox Code Playgroud)

它被编译器调用为

-I"XXXpath XXXYYYpath"
Run Code Online (Sandbox Code Playgroud)

我应该如何修改该行

set(XXX_INCLUDE_DIRS ${XXX_INCLUDE_DIR} ${XXXYYY_INCLUDE_DIR})
Run Code Online (Sandbox Code Playgroud)

它设置变量的值XXX_INCLUDE_DIRS

. 中的多个库路径也会出现同样的问题XXX_LIBRARIES

cmake

3
推荐指数
1
解决办法
2185
查看次数

C++错误:'inline'只能出现在函数上

我正在尝试使用clang ++在OS X 10.7下编译VCMI.

我配置项目是CXX=clang++因为Apple的gcc似乎没有识别所需的-std=c++0x标志.

我添加-stdlib=libc++CXXFLAGS因为没有那个铿锵甚至找不到#include <array>.

目前我有: CXXFLAGS= -std=c++0x -stdlib=libc++ -Wall -Wextra -Wcast-align -Wpointer-arith -Wno-switch -Wno-sign-compare -Wno-unused-parameter -Wc++11-extensions

问题是我得到以下错误:

clang: warning: treating 'c-header' input as 'c++-header' when in C++ mode, this behavior    is deprecated
clang: warning: argument unused during compilation: '-ggdb'
StdInc.h:1:9: warning: #pragma once in main file
#pragma once
        ^
In file included from StdInc.h:3:
In file included from ./../Global.h:32:
In file included from /usr/bin/../lib/c++/v1/algorithm:594:
In …
Run Code Online (Sandbox Code Playgroud)

c++ clang libc++

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

CMake(或类似)可以生成不使用cl.exe的Visual C++项目吗?

是否可以使用CMake(或其他构建自动化实用程序)生成Visual C++项目,该项目使用 cl.exe 之外的C++编译器?理想情况下,它可以找到相关的兼容C++标准库; 并允许步骤调试; 但是一步一步:如果它甚至可以编译一个空main函数,那将是一个好的开始.

cmake visual-c++

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