Compiler un exécutable statique avec CMake

pour un projet j'ai besoin de créer un fichier exécutable qui contient toutes les bibliothèques que j'ai utilisé (opencv, cgal) afin de l'exécuter sur un ordinateur qui n'a pas de ces bibliothèques. Actuellement, c'est mon CMakeLists.txt (j'utilise linux).

cmake_minimum_required(VERSION 2.8)
#set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O2")
project( labeling )
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
add_library(OpenCV STATIC IMPORTED)
add_library(CGAL STATIC IMPORTED COMPONENTS Core)
add_library(GMP STATIC IMPORTED)
find_package(OpenCV REQUIRED)
find_package(CGAL QUIET COMPONENTS Core )
find_library(GMP_LIBRARY gmp /usr/lib)

include(src)
include( ${CGAL_USE_FILE} )
include( CGAL_CreateSingleSourceCGALProgram )


set(EXECUTABLE_OUTPUT_PATH ../bin)
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")

include_directories( src )
include_directories( ${OpenCV_INCLUDE_DIRS} )

file(GLOB_RECURSE nei_SRC "src/*.cpp")
add_executable( nei_segmentation ${nei_SRC})
target_link_libraries( nei_segmentation ${OpenCV_LIBS} ${GMP_LIBRARY})

De manière uniquement GMP et quelques autres bibliothèques c++ sont inclus dans mon fichier exécutable. Ma question est: Comment puis-je créer un fichier makefile pour automatiquement, y compris toutes les bibliothèques de manière statique et ne formant qu'un "gros" fichier exécutable qui contient toutes les bibliothèques? Pouvez-vous m'aider?

Vous ne devez pas utiliser file(GLOB ...) à rassembler les fichiers source, il ne fonctionnera pas correctement lorsque vous ajoutez de nouveaux fichiers. Il est également très ignore quel est ton problème. Le add_library(IMPORTED) les appels sont également de ne rien faire.
J'ai besoin de créer un fichier exécutable qui contient toutes les bibliothèques (opencv, cgal et toutes les bibliothèques c++) pour exécuter le fichier exécutable dans l'autre ordinateur où Opencv ou CGAL ou d'autres bibliothèques C++ ne sont pas installés.
Vous devez d'abord assurez-vous que toutes les bibliothèques dont vous dépendez sont construits de manière statique. Ce n'est pas souvent le cas. Après cela, vous devez vous assurer que votre find_package appels de trouver ces bibliothèques statiques.
Oui, je sais cela, mon problème est: comment inclure l' .un fichiers.
Andrea, quelle est ta question exactement? Dans votre post, la seule question est "Pouvez-vous m'aider?". Vous devez éditer votre post, et au moins de décrire ce que sont les questions que vous avez testé jusqu'à présent.

OriginalL'auteur Andrea | 2014-07-09