> 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

Reply via email to