我正在尝试使用以下cmake脚本在Kubuntu 14.04下构建Sandia Lab的Dakota工具包:

cmake \
-D CMAKE_INSTALL_PREFIX:PATH=/usr/local/dakota \
-D CMAKE_BUILD_TYPE:STRING=Release \
-D DAKOTA_HAVE_MPI:BOOL=TRUE \
-D MPI_INCLUDE_PATH="/usr/lib/openmpi/include" \
-D MPI_LIBRARY="/usr/lib/openmpi/lib" \
-D CMAKE_CXX_COMPILER:FILEPATH="/usr/bin/mpicxx" \
-D HAVE_X_GRAPHICS:BOOL=FALSE \
-D Trilinos_DIR:STRING="=/usr/local/trilinos/lib/cmake/Trilinos" \
-D BLAS_LIBS:STRING="/usr/lib/libcblas.so.3" \
-D LAPACK_LIBS:STRING="/usr/lib/lapack.so.3" \
-D Boost_INCLUDE_DIR:STRING="/usr/local/boost/source/boost_1_57_0" \
/usr/local/dakota/dakota-6.1.0.src


但是,配置失败并显示警告

CMake Warning at /usr/local/trilinos/TrilinosConfig.cmake:44 (MESSAGE):
TrilinosConfig.cmake has moved.  It now exists at a location under the
installation prefix where the find_package command looks by default     (<prefix>/lib/cmake/Trilinos).  This compatibility file exists at the old location (<prefix>/include) to present this message and load the file from  its new location. The find_package() call that loaded this file did so because its cached result variable, Trilinos_DIR, is set to

/usr/local/trilinos

I'm locally setting Trilinos_DIR to

/usr/local/lib/cmake/Trilinos

and loading TrilinosConfig.cmake from its new location.  One may suppress
this warning by setting the above value in the cache.  However, the
application needs modification permanently fix the issue.  The
find_package() call that loaded this file may have the form

find_package(Trilinos REQUIRED PATHS ${Trilinos_PATH}/include)

Change it to the form

set(CMAKE_PREFIX_PATH ${Trilinos_PATH} ${CMAKE_PREFIX_PATH})
find_package(Trilinos REQUIRED)

to find TrilinosConfig.cmake in its new location in future builds while
still honoring the Trilinos_PATH option for this application.


和错误

CMake Error at /usr/local/trilinos/TrilinosConfig.cmake:66 (INCLUDE):
include could not find load file:

/usr/local/lib/cmake/Trilinos/TrilinosConfig.cmake


因为/usr/local/lib/cmake/Trilinos下没有Trilinos。不幸的是,尽管似乎已经提出了解决方案,但我在使用cmake进行补救方面经验不足。谁能带领我完成整个过程?

除了Trilinos问题外,cmake还无法找到多个(头)文件,即

Looking for pthread_create in pthreads - not found
Looking for include file cxxabi.h - not found
Looking for include file cxxabi.h - not found
Looking for pdb.h - not found


而且我不确定这是否是一个单独的问题(以及如何解决)。任何帮助将不胜感激。

相关软件版本为cmake 2.8.12.2,boost 1.57.0,openmpi 1.6.5和trilinos 11.14.1。

最佳答案

尝试以下2个选项。

要么...


修改您的cmake调用,即删除

-D Trilinos_DIR:STRING =“ = / usr / local / trilinos / lib / cmake / Trilinos” \


要么...


查找TrilinosConfig.cmake的位置
修改您的cmake调用,即将正确的目录放在您说的位置

-D Trilinos_DIR:STRING =“ = / usr / local / trilinos / lib / cmake / Trilinos” \




关于问题的第二部分,首先检查无法找到这些标头的事实是否确实对您的后续构建有影响。



现在,我看到您的命令行中有一个错字,一个伪造的=。试试看

-D Trilinos_DIR:STRING="/usr/local/trilinos/lib/cmake/Trilinos"

要么

-D Trilinos_DIR:STRING="/usr/local/trilinos"

关于c++ - 生成Dakota时配置错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29767894/

10-12 23:28