[CMake] ExternalProject_Add Visual Studio build Install Target

J Decker d3ck0r at gmail.com
Sun Oct 20 17:24:06 EDT 2019


On Sat, Aug 31, 2019 at 9:56 PM J Decker <d3ck0r at gmail.com> wrote:

> Why does it seem I'm the only one with this problem?
>

This is an external CMakeLists.txt that fails.
----
cmake_minimum_required(VERSION 3.15)

set_property(GLOBAL PROPERTY USE_FOLDERS On)

project( B )
include( ExternalProject )

add_executable( b b.c )

###### Specifically this line causes the fails #############
SET_TARGET_PROPERTIES(b PROPERTIES FOLDER "install" )

install( TARGETS b )
-----





A full Test  ...
--- CMakeLists.txt---
cmake_minimum_required(VERSION 3.15)

if( NOT EXISTS b )
file(MAKE_DIRECTORY b)
file( WRITE b/b.c "#include <stdio.h>\nint main(void) { printf(
\"Program.\\n\" ); }" )
file( WRITE b/CMakeLists.txt  "cmake_minimum_required(VERSION
3.15)\n\nset_property(GLOBAL PROPERTY USE_FOLDERS On)\n\nproject( B
)\ninclude( ExternalProject )\n\nadd_executable( b b.c
)\nSET_TARGET_PROPERTIES(b PROPERTIES\n                  FOLDER \"install\"
)\n\ninstall( TARGETS b )\n" )

endif( NOT EXISTS b )

set_property(GLOBAL PROPERTY USE_FOLDERS On)

project( Test )

include( ExternalProject )

ExternalProject_Add( b
        PREFIX b-src
SOURCE_DIR ${CMAKE_SOURCE_DIR}/b
BINARY_DIR b_exe
INSTALL_DIR ${CMAKE_INSTALL_PREFIX}
        BUILD_ALWAYS 1
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
-DCMAKE_BUILD_TYPE:PATH=${CMAKE_BUILD_TYPE}
)

--- End CMakeLists.txt---

mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=output
cmake --build . --target install

Error Output:
 MSBUILD : error MSB1009: Project file does not exist.
[M:\tmp\cmake_vs_install\build\b.vcxproj]
  Switch: install


-----------

  SET_TARGET_PROPERTIES(b PROPERTIES FOLDER "Install" ) # capitalize I
bypasses the issue
  SET_TARGET_PROPERTIES(b PROPERTIES FOLDER "Install and Deploy" ) # make
it really log also bypasses the issue...

otherwise capitalizing --target INSTALL in the ExternalProject.cmake, for
visual studio, also fixed the problem, since the real target is 'INSTALL'
and not 'install'
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake/attachments/20191020/6718c7b6/attachment.html>


More information about the CMake mailing list