> Den 29. okt. 2017 kl. 02.29 skrev Craig Scott <[email protected]>: > > > > On Sun, Oct 29, 2017 at 11:26 AM, Carlton Banks <[email protected] > <mailto:[email protected]>> wrote: > CMake Error at src/include/record/CMakeLists.txt:28 > (target_include_directories): > Cannot specify include directories for imported target "portaudio". > > > is the problem that externalProject_add only is executed when make is > executed and not when cmake is executed’? > what is `portaudio` here referring to? > > The name "portaudio" is the target defined by the add_library() call in my > example (the imported target that represents what the ExternalProject_Add() > is going to create at build time). ok.
> Did you also try the INTERFACE IMPORTED alternative? Still the same.. > It would be more useful if you showed the full CMakeLists.txt rather than > just the error message. > The submodule cmakelist: https://pastebin.com/x2WNhK56 <https://pastebin.com/x2WNhK56> tree structure https://pastebin.com/xhPNCkN2 <https://pastebin.com/xhPNCkN2> The outer cmakelist includes the inner directories. > > >> Den 29. okt. 2017 kl. 02.19 skrev Craig Scott <[email protected] >> <mailto:[email protected]>>: >> >> >> >> On Sun, Oct 29, 2017 at 10:36 AM, Carlton Banks <[email protected] >> <mailto:[email protected]>> wrote: >> I seem to have some problems executing one of my submodules cmakelist. >> >> MESSAGE(“In record CMAKELIST”) >> >> # Include externalproject {portaudio} if lib/portaudio don't exist. >> MESSAGE(“Download external project”) >> >> INCLUDE(ExternalProject) >> ExternalProject_Add(project_portaudio >> GIT_REPOSITORY https://git.assembla.com/portaudio.git >> <https://git.assembla.com/portaudio.git> >> PREFIX lib/portaudio >> CONFIGURE_COMMAND <SOURCE_DIR>/configure >> BUILD_IN_SOURCE 1 >> BUILD_COMMAND make >> INSTALL_COMMAND sudo make install >> ) >> ExternalProject_Get_Property(project_portaudio BINARY_DIR) >> ExternalProject_Get_Property(project_portaudio SOURCE_DIR) >> >> SET(portaudio_lib_dir "${BINARY_DIR}/lib/.libs") >> SET(portaudio_inc_dir "${SOURCE_DIR}/include") >> >> add_library(record STATIC record.cpp record.h) >> add_library(libaudio libportaudio.a PATHS ${portaudio_lib_dir}) >> >> What is this second add_library() command intended to do? I'm guessing you >> probably instead want to be doing something like this (untested, but >> hopefully in the ballpark): >> >> add_library(portaudio STATIC IMPORTED) >> set_target_properties(portaudio PROPERTIES >> IMPORTED_LOCATION ${BINARY_DIR}/lib/.libs/libportaudio.a >> ) >> target_include_directories(portaudio INTERFACE >> ${SOURCE_DIR}/include >> ) >> add_dependencies(portaudio project_portaudio) # Not sure if this is >> allowed for imported targets though >> >> I don't recall off the top of my head whether STATIC IMPORTED or INTERFACE >> IMPORTED would be the right way to call add_library() in the above, so try >> the latter if the former doesn't work for you. >> >> >> >> >> >> # >> # this makes sure we have compiler flags that allow class::class() = default >> (>= C++11) >> target_compile_features(record PUBLIC cxx_defaulted_functions) >> >> >> >> >> target_include_directories(record PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} >> ${project_portaudio}) >> >> You won't need this if you define the portaudio imported library as per my >> example above. >> >> >> >> >> It cannot find libportaudio.a as externalproject_add() is not being >> executed, the command it executes add_library, which fails as the project >> has not been downloaded… >> >> >> what is wrong here? >> >> The reason for this specific problem is that there's no dependency >> relationship between the project_portaudio target defined by the >> ExternalProject_Add() call and the record target. Such a relationship is >> only created through a suitable call to target_link_libraries() or >> add_dependencies(), or through arguments like DEPENDS for commands that >> offer such features (e.g. add_custom_target() and add_custom_command()). >> >> >> -- >> Craig Scott >> Melbourne, Australia >> https://crascit.com <https://crascit.com/> > > > > > -- > Craig Scott > Melbourne, Australia > https://crascit.com <https://crascit.com/>
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake
