2015-06-02 5 views
0

Я пытаюсь запустить примеры из VTK и изменить их, чтобы получить то, что я хочу отобразить на экране. В настоящее время я пытаюсь добавить серверное приложение, работающее параллельно с рендерингом VTK. У меня уже есть код, написанный для сервера, но мне было интересно, как я могу добавить эти заголовки и cpp в CMakeLists.txt.Добавление заголовков в Cmake

Действительно, это CMakeLists.txt я до сих пор:

cmake_minimum_required(VERSION 2.8) 

PROJECT(RotateActor) 

option(INCLUDE_SERVER 
    "Use the server implementation" ON) 

# add the Server library? 
if (INCLUDE_SERVER) 
    include_directories({${CMAKE_CURRENT_SOURCE_DIR}/Server/}) 
    set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Server/tcp_server.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Server/tcp_server.h) 
endif (INCLUDE_SERVER) 


find_package(VTK REQUIRED) 
include(${VTK_USE_FILE}) 

add_executable(RotateActor MACOSX_BUNDLE RotateActor ${SOURCES}) 

if(VTK_LIBRARIES) 
    target_link_libraries(RotateActor ${VTK_LIBRARIES}) 
else() 
    target_link_libraries(RotateActor vtkHybrid vtkWidgets) 
endif() 

Я генерировать с помощью CMake и VS2012. При открытии sln-файла и попытке создания я получаю следующую ошибку, поэтому я предполагаю, что моя интеграция заголовков неверна.

C:\...\RotateActor.cxx(12): fatal error C1083: Impossible d'ouvrir le fichier include : 'tcp_server.h' : No such file or directory 

Я не думаю, что вам нужен файл RotateActor.cxx, но если вы дадите мне знать.

Заранее благодарим за помощь.

+0

Я не вижу в файле CMakeLists.txt 'RotateActor.cxx'; tcp_server.cpp действительно находится в '$ {CMAKE_BINARY_DIR}'? Зачем? –

+0

Вы правы, у него не было причин быть там, а на самом деле нет. Я отредактировал вопрос :) – LBes

ответ

1

Я вижу некоторые проблемы в вашем файле CMake. Прежде всего, ваши файлы *.h не могут быть указаны в команде add_executable. Попробуйте что-то вроде этого:

cmake_minimum_required(VERSION 2.8) 

project(RotateActor) 
option(INCLUDE_SERVER "Use the server implementation" ON) 

# Manage your libraries before your sources 
find_package(VTK REQUIRED) 
include(${VTK_USE_FILE}) 

# add the Server library ? 
# Here, maybe use the path from the root, and not from the local dir ? 
# Don't add the .h in the sources 
if(INCLUDE_SERVER) 
    include_directories({${CMAKE_SOURCE_DIR}/Server}) 
    set(RotateActor_CPP_SOURCES 
    ${RotateActor_CPP_SOURCES} 
    ${CMAKE_SOURCE_DIR}/Server/tcp_server.cpp 
) 
endif() 

if(NOT VTK_LIBRARIES) 
    set(VTK_LIBRARIES vtkHybrid vtkWidgets) 
endif() 

add_executable(RotateActor ${RotateActor_CPP_SOURCES}) 
target_link_libraries(RotateActor ${VTK_LIBRARIES}) 
+0

Спасибо за ответ. Не работает, хотя, поскольку я получаю «фатальную ошибку LNK1120: 1 внешняя не разрешенная» ошибка в визуальной студии и при просмотре дополнительных включенных каталогов проекта я не вижу каталог сервера. Даже когда я добавляю его вручную, я все равно получаю сообщение об ошибке. Так можно ли разрешить эти две ошибки, так что 1 мне не нужно добавлять их вручную, а 2 я не получаю эту другую ошибку? Спасибо за помощь до сих пор :) Изменить: теперь мой файл Rotate.cxx даже не включен в проект VS. Поэтому я предполагаю, что есть другая проблема. – LBes

+0

Каково ваше дерево каталогов, где вы запускаете cmake и с какой командой? – Caduchon

+0

Я запускаю CMake с графическим интерфейсом. RotateActor.cxx находится в корне. Оттуда у меня есть Server/and build/ – LBes

Смежные вопросы