CMake - Impossible de trouver le fichier
Je suis en train de créer ma solution avec l'utilisation de CMake. C'est ma première fois et j'ai commencé avec quelque chose de simple.
J'ai fait un fichier texte (CMakeLists.txt) et l'a utilisé dans CMake. Je peux "Configurer" avec pas d'erreur mais j'ai une erreur quand j'essaie de le générer:
CMake Error at CMakeLists.txt:75 (ADD_EXECUTABLE):
Cannot find source file:
./source/server/server.hpp
Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
.hxx .in .txx
C'est le chemin de mes fichiers:
\QTCP_Connection\source\server (contain server.cpp and server.hpp)
\QTCP_Connection\source\qtcp (contain main.cpp)
\QTCP_Connection\source\libs (contain singleton_holder.hpp and stdafx.hpp and stdafx.cpp and targetver.hpp)
Et c'est mon CMakeLists.txt:
cmake_minimum_required(VERSION 2.8.6)
PROJECT(QTCP_Connection)
FIND_PACKAGE(Qt4 REQUIRED)
INCLUDE(${QT_USE_FILE} )
ADD_DEFINITIONS(${QT_DEFINITIONS})
ADD_DEFINITIONS(-DUNICODE)
ADD_DEFINITIONS(-DQT_PLUGIN)
ADD_DEFINITIONS(-DQT_SHARED)
ADD_DEFINITIONS(-DQT_DLL)
ADD_DEFINITIONS(-DQT_LARGEFILE_SUPPORT)
ADD_DEFINITIONS(-DQT_THREAD_SUPPORT)
SET(QT_DONT_USE_QTGUI TRUE)
SET(QTCP_PROJECT_DIR .)
SET(QTCP_QT_DIR $ENV{SEPANTA_QT_DIR})
SET(QTCP_BOOST_DIR $ENV{SEPANTA_BOOST_DIR})
SET(QTCP_PYTHON_DIR $ENV{SEPANTA_PYTHON_DIR})
SET(QTCP_XFS_DIR $ENV{XFS_DIR})
SET(QTCP_LOGGER_DIR $ENV{SEPANTA_LOGGER_DIR})
SET(DEVICE_MANAGER_IMPL_DIR device-manager)
SET(DEVICES_BASE_DIR ../../devices)
SET(DEVICES_IMPL_DIR devices)
SET(QTCP_DIR ${QTCP_PROJECT_DIR}/source/qtcp)
SET(SERVER_DIR ${QTCP_PROJECT_DIR}/source/server)
SET(LIBS_DIR ${QTCP_PROJECT_DIR}/source/libs)
INCLUDE_DIRECTORIES(
${QTCP_PROJECT_DIR}/source
${QTCP_QT_DIR}/include
${QTCP_QT_DIR}/include/QtCore
${QTCP_BOOST_DIR}/include/boost-1_50
${QTCP_LOGGER_DIR}/include
${QTCP_PYTHON_DIR}/include
)
SET(QT_HEADERS
${SERVER_DIR}/server.hpp
)
QT4_WRAP_CPP(QT_HEADERS_MOC ${QT_HEADERS} OPTIONS -DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED)
SET(QTCP_FILES
${QTCP_PROJECT_DIR}/source/qtcp/main.cpp
)
SET(SERVER_FILES
${SERVER_DIR}/server.hpp
${SERVER_DIR}/server.cpp
)
SET(LIBS_FILES
${LIBS_DIR}/singleton_holder.hpp
${LIBS_DIR}/stdafx.cpp
${LIBS_DIR}/stdafx.hpp
${LIBS_DIR}/targetver.hpp
)
LINK_DIRECTORIES(
${QTCP_QT_DIR}/lib
${QTCP_BOOST_DIR}/lib
${QTCP_PYTHON_DIR}/libs
${QTCP_LOGGER_DIR}/lib
${QTCP_XFS_DIR}/XFS_WINCOR_4.1
${QTCP_XFS_DIR}/XFS_WINCOR_4.1/LIB)
SET(XFS_LIBS
MSXFS
xfs_conf
SSIDLL)
ADD_EXECUTABLE(QTCP_Connection
${QT_HEADERS_MOC}
${QTCP_FILES}
${SERVER_FILES}
${LIBS_FILES}
)
source_group("moc_generated" FILES ${QT_HEADERS_MOC})
source_group("source\\qtcp" FILES ${QTCP_FILES})
source_group("source\\server" FILES ${SERVER_FILES})
source_group("source\\libs" FILES ${LIBS_FILES})
TARGET_LINK_LIBRARIES(QTCP_Connection
#${QT_LIBRARIES}
${QT_QTCORE_LIBRARY}
${QT_QTNETWORK_LIBRARY}
${QT_QTSQL_LIBRARY}
${XFS_LIBS}
debug log4cplusUD.lib
optimized log4cplusU.lib
)
set_target_properties(QTCP_Connection PROPERTIES COMPILE_FLAGS "/W2 /Zc:wchar_t-")
set_target_properties(QTCP_Connection PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")
Pouvez-vous me dire ce que je fais mal?
OriginalL'auteur M.H. | 2013-08-12
Vous devez vous connecter pour publier un commentaire.
Cette ligne semble problématique:
Le répertoire
.
pointe vers le répertoire de travail de l'exécutant cmake processus et non pas le répertoire de la CMakeLists fichier.Au lieu de cela, vous devriez utiliser quelque chose comme
Voir la documentation sur le PROJECT_SOURCE_DIR variable pour plus de détails.
Notez que vous pouvez utiliser
message
de faire un simple printf débogage si vous n'êtes pas sûr de ce qu'une certaine variable de points:J'ai utilisé la commande de message pour voir les fichiers dans le répertoire cmake ne peux pas le trouver mais est toujours ok. message("SERVER_FILES points" ${SERVER_FILES}) ------> SERVER_FILES points à D:/Source-Code/QTCP_Connection/source/server/server.hpp D:/Source-Code/QTCP_Connection/source/server/server.cpp
Pouvez-vous essayer de supprimer les
CMakeCache.txt
dans votre dossier de création et de l'exécuter à nouveau. Aussi, l'erreur donnée par CMake devriez regarder différemment maintenant. Pouvez-vous donner le nouveau message d'erreur?J'ai supprimé mon CMakeLists.txt et fait de nouveau avec un nouveau nom et cela a fonctionné sans problème. Un peu bizarre mais merci pour l'astuce 😉
OriginalL'auteur ComicSansMS