Makefile 使用CMake编译以获取共享库
我正在使用Ogre3D进行这个项目,它是一个3D引擎。 实际上,我使用cmake(add_可执行函数)构建项目 但是为了我的项目,我需要一个共享库,而不是一个可执行文件 这是我的CMakeLists.txtMakefile 使用CMake编译以获取共享库,makefile,cmake,shared-libraries,ogre,Makefile,Cmake,Shared Libraries,Ogre,我正在使用Ogre3D进行这个项目,它是一个3D引擎。 实际上,我使用cmake(add_可执行函数)构建项目 但是为了我的项目,我需要一个共享库,而不是一个可执行文件 这是我的CMakeLists.txt project(TestOgre) cmake_minimum_required(VERSION 2.6) set(CMAKE_MODULE_PATH "/usr/local/lib/OGRE/cmake/") #set(CMAKE_CXX_FLAGS "-Wa
project(TestOgre)
cmake_minimum_required(VERSION 2.6)
set(CMAKE_MODULE_PATH "/usr/local/lib/OGRE/cmake/")
#set(CMAKE_CXX_FLAGS "-Wall -W -Werror -ansi -pedantic -g")
# Il s'agit du tutoriel d'exemple, qui utilise quelques fichiers prédéfinis de Ogre. Il faut indique\
r à cmake où se trouvent les includes en question
include_directories ("/usr/local/include/OGRE/")
# Bien sûr, pour compiler Ogre, il faut le chercher, et définir le répertoire contenant les includes\
.
find_package(OGRE REQUIRED)
include_directories (${OGRE_INCLUDE_DIRS})
# L'exemple dépend aussi de OIS, une lib pour gérer la souris, clavier, joystick...
find_package(OIS REQUIRED)
# On définit les sources qu'on veut compiler
SET(SOURCES
main.cpp
Map.cpp
Case.cpp
AObject.cpp
Player.cpp
Game.cpp
UpdateOgre.cpp
InitOgre.cpp
AppDemarrage.cpp)
# On les compile
#add_executable (
# TestOgre ${SOURCES}
#)
// what i have add to get a shared library
add_library (
TestOgre SHARED &{SOURCES}
)
target_link_libraries(TestOgre ${OGRE_LIBRARY} ${OIS_LIBRARY} "/usr/lib/x86_64-linux-gnu/libboost_sy\
stem.so.1.53.0")
从注释来看,问题在于您没有使用SHARED参数来指定共享库,而且使用了&{SOURCES}而不是${SOURCES}
add_library (
TestOgre SHARED ${SOURCES}
)
add_library(Teshared SHARED${SOURCES})无法为此项目未生成的目标“TestOgre”指定链接库。这是预期的。您注释掉了TestOgreannot find源文件:&{SOURCES}trued extensions.c.&{SOURCES}应该是${SOURCES}