链接项目符号包含目录与cmake
linking bullet include directory with cmake
我有一个常见问题,"include not found"。当我使用命令行设置包含和库目录时,一切都很好,
引用:
g++ src/B_engine.cc -lLinearMath -lBulletSoftBody -lBulletCollision -lBulletDynamics -I/usr/include/bullet -o a.out
但我需要让它与 cmake 一起工作,这里有我当前 cmake 的副本,
cmake_minimum_required( VERSION 2.8 )
project( a.out )
set( SOURCES src/B_engine.cc )
set( EXECUTABLE_NAME a.out )
find_package( Bullet REQUIRED )
add_executable( ${EXECUTABLE_NAME} ${SOURCES} )
add_definitions(-std=c++11)
当我执行 "ccmake ." 时,我看到:
BULLET_INCLUDE_DIR /usr/include/bullet
CMAKE_BUILD_TYPE
CMAKE_INSTALL_PREFIX /usr/local
所以,我(使用命令行)和 cmake 期望使用 /usr/include/bullet 作为目录。但是当我做 "make" 时,我得到这个错误:
[100%]
Scanning dependencies of target a.out
Building CXX object CMakeFiles/a.out.dir/src/B_engine.cc.o
In file included from /home/user/test/src/B_engine.cc:2:0:/home/user/test/src/B_engine.hh:5:36: fatal error: btBulletDynamicsCommon.h: No such file or directory
#include <btBulletDynamicsCommon.h>
我不明白为什么 g++ 命令行和 cmake 没有给出相同的结果。
也许 Bullet 的 find_package 脚本只定位了包含目录,但没有将它添加到包含列表中。
所以我会明确地添加它:
include_directories(${BULLET_INCLUDE_DIR})
我有一个常见问题,"include not found"。当我使用命令行设置包含和库目录时,一切都很好, 引用:
g++ src/B_engine.cc -lLinearMath -lBulletSoftBody -lBulletCollision -lBulletDynamics -I/usr/include/bullet -o a.out
但我需要让它与 cmake 一起工作,这里有我当前 cmake 的副本,
cmake_minimum_required( VERSION 2.8 )
project( a.out )
set( SOURCES src/B_engine.cc )
set( EXECUTABLE_NAME a.out )
find_package( Bullet REQUIRED )
add_executable( ${EXECUTABLE_NAME} ${SOURCES} )
add_definitions(-std=c++11)
当我执行 "ccmake ." 时,我看到:
BULLET_INCLUDE_DIR /usr/include/bullet
CMAKE_BUILD_TYPE
CMAKE_INSTALL_PREFIX /usr/local
所以,我(使用命令行)和 cmake 期望使用 /usr/include/bullet 作为目录。但是当我做 "make" 时,我得到这个错误:
[100%]
Scanning dependencies of target a.out
Building CXX object CMakeFiles/a.out.dir/src/B_engine.cc.o
In file included from /home/user/test/src/B_engine.cc:2:0:/home/user/test/src/B_engine.hh:5:36: fatal error: btBulletDynamicsCommon.h: No such file or directory
#include <btBulletDynamicsCommon.h>
我不明白为什么 g++ 命令行和 cmake 没有给出相同的结果。
也许 Bullet 的 find_package 脚本只定位了包含目录,但没有将它添加到包含列表中。 所以我会明确地添加它:
include_directories(${BULLET_INCLUDE_DIR})