1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
# Enable Qt MOC/UIC/RCC
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC OFF)
set(CMAKE_AUTORCC OFF)
# Executable
add_executable(
librepcb_cli MACOSX_BUNDLE # When building on macOS, create a bundle
commandlineinterface.cpp commandlineinterface.h main.cpp
)
target_include_directories(
librepcb_cli
PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../../libs"
)
target_link_libraries(
librepcb_cli
PRIVATE common
# LibrePCB
LibrePCB::Core
# Third party
Optional::Optional
# Qt
${QT}::Core
)
set_target_properties(librepcb_cli PROPERTIES OUTPUT_NAME librepcb-cli)
# Install target
install(
TARGETS librepcb_cli
BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}"
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
)
# macOS bundle configuration
if(APPLE)
# Add icon
set(MACOSX_ICON_PATH "${CMAKE_SOURCE_DIR}/img/app/librepcb.icns")
target_sources(librepcb_cli PUBLIC "${MACOSX_ICON_PATH}")
set_source_files_properties(
"${MACOSX_ICON_PATH}" PROPERTIES MACOSX_PACKAGE_LOCATION "Resources"
)
# Set bundle properties (used for Info.plist)
set_target_properties(
librepcb_cli
PROPERTIES BUNDLE True MACOSX_BUNDLE_INFO_PLIST
"${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in"
)
endif()
# Windows executable configuration
if(WIN32)
# Add icon
set(WINDOWS_APP_ICON_RESOURCE
"${CMAKE_SOURCE_DIR}/cmake/WindowsExecutableResource.rc"
)
target_sources(librepcb PUBLIC "${WINDOWS_APP_ICON_RESOURCE}")
endif()
|