Я не очень хорошо знаком с cmake и mingw.Выведите DLL вместо .exe с cmake/mingw
У меня есть исходный код, который можно построить с ним (и процесс сборки отлично работает с mingw32-make
). Проблема в том, что я хотел бы выводить библиотеки DLL, а не файлы .exe.
У меня есть CMakeList
файла, который я считаю, сохраняет конфигурацию я должен изменить (эта часть должна отвечать производить файлы с расширением EXE для файлов .cpp в Examples/
каталоге, принимая некоторые зависимости во внимание):
# C examples
if(PSMOVE_BUILD_EXAMPLES)
foreach(EXAMPLE example multiple dump_calibration battery_check)
add_executable(${EXAMPLE} examples/c/${EXAMPLE}.c)
target_link_libraries(${EXAMPLE} psmoveapi)
endforeach()
if(PSMOVE_BUILD_TRACKER AND PSMOVE_BUILD_TUIO_SERVER)
include_directories(${PSMOVEAPI_SOURCE_DIR}/external/TUIO_CPP/TUIO)
include_directories(${PSMOVEAPI_SOURCE_DIR}/external/TUIO_CPP/oscpack)
add_executable(tuio_server examples/c/tuio_server.cpp
external/TUIO_CPP/TUIO/TuioClient.cpp
...
external/TUIO_CPP/oscpack/ip/win32/NetworkingUtils.cpp
external/TUIO_CPP/oscpack/ip/win32/UdpSocket.cpp)
set_target_properties(tuio_server PROPERTIES
COMPILE_FLAGS -DOSC_HOST_LITTLE_ENDIAN)
target_link_libraries(tuio_server psmoveapi psmoveapi_tracker)
else()
# Disable the TUIO Server if we don't build the tracker
set(PSMOVE_BUILD_TUIO_SERVER OFF)
endif()
if(PSMOVE_BUILD_TRACKER)
foreach(EXAMPLE distance_calibration)
add_executable(${EXAMPLE} examples/c/${EXAMPLE}.c)
target_link_libraries(${EXAMPLE} psmoveapi psmoveapi_tracker)
endforeach()
endif()
endif()
Я думаю, я должен добавить -DBUILDING_EXAMPLE_DLL
и -shared
вариантов где-то. Но где именно? Или, может быть, мне не хватает смысла?
Чтобы сделать DLL вам нужно 'add_library (mydlltarget ОБЩИХ mysourcefiles)' не 'add_executable (myexetarget mysourcefiles) ' – drescherjm
Вау, это будет единственное изменение здесь? Достаточно мощный;) – PolGraphic
Возможно, вам нужно изменить заголовки для классов, которые вы хотите экспортировать. Я не знаком с mllw dll, поэтому я не могу с этим поделать. – drescherjm