# Getting a bad g++ commandline using several configurations. Help wanted.

**URL:** https://discourse.cmake.org/t/getting-a-bad-g-commandline-using-several-configurations-help-wanted/15401
**Category:** Code
**Created:** [December 15, 2025, 2:28pm UTC](https://discourse.cmake.org/t/getting-a-bad-g-commandline-using-several-configurations-help-wanted/15401 "2025-12-15T14:28:17Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![janheckman](https://discourse.cmake.org/letter_avatar_proxy/v4/letter/j/ccd318/32.png) [@janheckman](https://discourse.cmake.org/u/janheckman)
#### Post date: [December 15, 2025, 2:28pm UTC](https://discourse.cmake.org/t/getting-a-bad-g-commandline-using-several-configurations-help-wanted/15401/1 "2025-12-15T14:28:17Z")

</div>

I get build errors on Linux using g++, during the object phase, like:

```auto
cc1plus: error: too many filenames given; type ‘cc1plus --help’ for usage
cc1plus: fatal error: contournieuw/CMakeFiles/contournieuw.dir/contournieuw.cpp.d: No such file or directory.

```

The .d file is for dependencies afaik but here somehow (improperly) added as a source file.  
The command works after removing it.  
I very much would like to know how it got there and even better, how to get rid of it…  
I have a root cmakelist.txt and a subdir one, included in the root cmakelists.txt with add\_subdirectory(contournieuw).  
From the root: `cmake -G Ninja -B Debug -DCMAKE_BUILD_TYPE=Debug`  
At some point, I changed to targets (Debug and Release) and that works.  
But I try now to use my cmake project for qtcreate and that requires project() statements in each non-root cmakelists.txt.  
I apologize for not having that much experience with cmake. Hopefully it is a simple matter!  
I tried vainly to attach.  
The full (bad) command is:  
`/usr/bin/g++ -DNUMTYPE=float -D_CRT_SECURE_NO_WARNINGS -D_DEBUG -D_ITERATOR_DEBUG_LEVEL=0 -D_MBCS -D __CONTOUR__ -I/home/jan/projects/gevers-civiel/contournieuw/../../shapelibport/include -I/home/jan/projects/gevers-civiel/contournieuw/.. -I/home/jan/projects/gevers-civiel/contournieuw/. -g -m64 -std=c++20 -D_FILE_OFFSET_BITS=64 -msse4.1 -mfma -Wno-unknown-pragmas -Wno-reorder -Wno-format-overflow -Wno-missing-field-initializers -o0 -Wextra -MD -MT contournieuw/CMakeFiles/contournieuw.dir/contournieuw.cpp.o -MF contournieuw/CMakeFiles/contournieuw.dir/contournieuw.cpp.o.d -o contournieuw/CMakeFiles/contournieuw.dir/contournieuw.cpp.o -c /home/jan/projects/gevers-civiel/contournieuw/contournieuw.cpp`  
The root cmakelists.txt:

```auto
cmake_minimum_required(VERSION 3.16.0 FATAL_ERROR)

set(CMAKE_SYSTEM_VERSION 10.0 CACHE STRING "" FORCE)

project(gevers-civiel-basis C CXX)

################################################################################
# Specify compiler and add settings for LTO.
################################################################################
set(CMAKE_CXX_COMPILER
    "/usr/bin/g++"
    CACHE STRING "" FORCE
)

set(CMAKE_AR
   "/usr/bin/gcc-ar-14"
    CACHE STRING "" FORCE
)
set(CMAKE_RANLIB
    "/usr/bin/gcc-ranlib-14"
    CACHE STRING "" FORCE
)

################################################################################
# Set target arch type if empty.
################################################################################
if(NOT CMAKE_PLATFORM_NAME)
    set(CMAKE_PLATFORM_NAME "x64")
endif()
message("${CMAKE_PLATFORM_NAME} architecture in use")

if(NOT ("${CMAKE_PLATFORM_NAME}" STREQUAL "x64"))
    message(FATAL_ERROR "${CMAKE_PLATFORM_NAME} arch is not supported!")
endif()

################################################################################
# Global configuration types
################################################################################
set(CMAKE_CONFIGURATION_TYPES
    "Debug"
    "Release"
    CACHE STRING "" FORCE
)

################################################################################
# Global compiler options
################################################################################

################################################################################
# Global linker options
################################################################################

################################################################################
# Compile flags and macros.
################################################################################
set(MY_COMPILE_FLAGS
    "-m64"
    "-std=c++20"
    "-D_FILE_OFFSET_BITS=64"
    "-msse4.1"
    "-mfma"
    #"-fopenmp" # SPECIFICEER OPENMP PER GEVAL! Iig niet bij contournieuw
    "-Wno-unknown-pragmas"
    "-Wno-reorder"
    "-Wno-format-overflow"
    "-Wno-missing-field-initializers"
    CACHE STRING "" FORCE
)
set(MY_COMPILE_DEFINITIONS
    __CONTOUR__ ;
    _CRT_SECURE_NO_WARNINGS;
    NUMTYPE=float;
    _MBCS;
    ${DEFAULT_CXX_EXCEPTION_HANDLING}
    CACHE STRING "" FORCE
)

################################################################################
# Common utils
################################################################################
include(CMake/Utils.cmake)

################################################################################
# Additional Global Settings(add specific info there)
################################################################################
include(CMake/GlobalSettingsInclude.cmake OPTIONAL)

################################################################################
# Use solution folders feature
################################################################################
set_property(GLOBAL PROPERTY USE_FOLDERS ON)

################################################################################
# Prepare linking to shapelib, define base path
set(SHAPELIB_BASE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../shapelibport/build/shapelib" CACHE STRING "" FORCE)
# Define the library paths for different configurations
set(SHAPELIB_PATH_DEBUG "${SHAPELIB_BASE_PATH}/static_lib_debug/" CACHE STRING "" FORCE)
set(SHAPELIB_PATH_RELEASE "${SHAPELIB_BASE_PATH}/static_lib/" CACHE STRING "" FORCE)

# Sub-projects
################################################################################
add_subdirectory(contournieuw)

```

and the subdir cmakelists.txt:

```auto
project(contournieuw)

################################################################################
# Source groups
################################################################################
set(Header_Files
    "contournieuw.h"
    "resource.h"
)
source_group("Header Files" FILES ${Header_Files})

set(Source_Files
    "contournieuw.cpp"
)
source_group("Source Files" FILES ${Source_Files})

set(ALL_FILES
    ${Header_Files}
    ${Source_Files}
)

set(MY_INCLUDE_DIRECTORIES
    "${CMAKE_CURRENT_SOURCE_DIR}/../../shapelibport/include;"
    "${CMAKE_CURRENT_SOURCE_DIR}/..;"
    "${CMAKE_CURRENT_SOURCE_DIR}/."
    CACHE STRING "" FORCE
)

################################################################################
# Target
################################################################################
add_executable(${PROJECT_NAME} ${ALL_FILES})
set(ROOT_NAMESPACE ${PROJECT_NAME})

################################################################################
# Target name
################################################################################
set_target_properties(${PROJECT_NAME} PROPERTIES
    OUTPUT_NAME "$<IF:$<CONFIG:Debug>,${PROJECT_NAME}deb,${PROJECT_NAME}64>"
    INTERPROCEDURAL_OPTIMIZATION_RELEASE "$<IF:$<CONFIG:Release>,TRUE,FALSE>"
)

################################################################################
# Include directories
################################################################################

target_include_directories(${PROJECT_NAME} PUBLIC ${MY_INCLUDE_DIRECTORIES})

################################################################################
# Compile definitions specific for targets
################################################################################
target_compile_definitions(${PROJECT_NAME} PRIVATE
    ${MY_COMPILE_DEFINITIONS};
    $<$<CONFIG:Release>:NDEBUG>
    $<$<CONFIG:Debug>:_DEBUG;_ITERATOR_DEBUG_LEVEL=0>
)

################################################################################
# Compile and link options
################################################################################
target_compile_options(${PROJECT_NAME} PRIVATE
    ${MY_COMPILE_FLAGS};
    $<$<CONFIG:Release>:-O3;-Wall>
    #$<$<CONFIG:Debug>:-ggdb;-o0;-Wextra>
    $<$<CONFIG:Debug>:-o0;-Wextra>
)
target_link_options(${PROJECT_NAME} PRIVATE
    $<$<CONFIG:Release>:-static>
)

################################################################################

set(ADDITIONAL_LIBRARY_DEPENDENCIES shapelib)

################################################################################

message(STATUS "Release Path: ${SHAPELIB_PATH_RELEASE}")
message(STATUS "Debug Path: ${SHAPELIB_PATH_DEBUG}")

target_link_libraries(${PROJECT_NAME} PRIVATE
    $<$<CONFIG:Debug>:${SHAPELIB_PATH_DEBUG}/libshapelib.a>
    $<$<CONFIG:Release>:${SHAPELIB_PATH_RELEASE}/libshapelib.a>
)

```

---

<div class="post-metadata">

### Author: ![retif](https://discourse.cmake.org/user_avatar/discourse.cmake.org/retif/32/1776_2.png) [@retif](https://discourse.cmake.org/u/retif)
#### Post date: [December 15, 2025, 3:09pm UTC](https://discourse.cmake.org/t/getting-a-bad-g-commandline-using-several-configurations-help-wanted/15401/2 "2025-12-15T15:09:52Z")

</div>

I haven’t read the entire post, mea culpa, but what immediately jumped at me is semicolons here:

> ```auto
> set(MY_INCLUDE_DIRECTORIES
> "${CMAKE_CURRENT_SOURCE_DIR}/../../shapelibport/include;"
> "${CMAKE_CURRENT_SOURCE_DIR}/..;"
> ...
> 
> ```

and here:

> ```auto
> target_compile_definitions(${PROJECT_NAME} PRIVATE
> ${MY_COMPILE_DEFINITIONS};
> ...
> 
> ```

and maybe in other places. Unless I am missing something, they should not be there, so that might have caused/contributed to the problem.

---

<div class="post-metadata">

### Author: ![janheckman](https://discourse.cmake.org/letter_avatar_proxy/v4/letter/j/ccd318/32.png) [@janheckman](https://discourse.cmake.org/u/janheckman)
#### Post date: [December 15, 2025, 4:22pm UTC](https://discourse.cmake.org/t/getting-a-bad-g-commandline-using-several-configurations-help-wanted/15401/3 "2025-12-15T16:22:22Z")

</div>

Thanks for your time! However, they are just space replacements and afaik do no harm. I’ve started recreating the project using qtcreator, can now debug, using a single CMakeLists.txt, somewhat shorter:

```auto
cmake_minimum_required(VERSION 3.5)

project(contournieuw LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_PLATFORM_NAME "x64")

add_executable(contournieuw contournieuw.cpp)

include(GNUInstallDirs)
install(TARGETS contournieuw
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
################################################################################
# Compile flags and macros.
################################################################################
set(MY_COMPILE_FLAGS
    "-m64"
    "-msse4.1"
    "-mfma"
    #"-fopenmp" # SPECIFICEER OPENMP PER GEVAL! Iig niet bij contournieuw
    "-Wno-unknown-pragmas"
    "-Wno-reorder"
    "-Wno-format-overflow"
    "-Wno-missing-field-initializers"
    CACHE STRING "" FORCE
)
set(MY_COMPILE_DEFINITIONS
    __CONTOUR__ ;
    _CRT_SECURE_NO_WARNINGS;
    NUMTYPE=float;
    _MBCS;
    ${DEFAULT_CXX_EXCEPTION_HANDLING}
    CACHE STRING "" FORCE
)
target_compile_definitions(${PROJECT_NAME} PRIVATE
    ${MY_COMPILE_DEFINITIONS};
    $<$<CONFIG:Release>:NDEBUG>
    $<$<CONFIG:Debug>:_DEBUG;_ITERATOR_DEBUG_LEVEL=0>
)
set(MY_INCLUDE_DIRECTORIES
    "${CMAKE_CURRENT_SOURCE_DIR}/../../shapelibport/include;"
    "${CMAKE_CURRENT_SOURCE_DIR}/..;"
    "${CMAKE_CURRENT_SOURCE_DIR}/."
    CACHE STRING "" FORCE
)

target_include_directories(${PROJECT_NAME} PUBLIC ${MY_INCLUDE_DIRECTORIES})
# Prepare linking to shapelib, define base path
set(SHAPELIB_BASE_LIBPATH "~/projects/shapelibport/build/shapelib" CACHE STRING "" FORCE)
# Define the library paths for different configurations
target_link_directories(${PROJECT_NAME} PUBLIC
    $<$<CONFIG:Debug>:${SHAPELIB_BASE_LIBPATH}/static_lib_debug>
    $<$<CONFIG:Release>:${SHAPELIB_BASE_LIBPATH}/static_lib>
)
target_link_libraries(${PROJECT_NAME} PRIVATE shapelib)

```

---

<div class="post-metadata">

### Author: ![ben.boeckel](https://discourse.cmake.org/letter_avatar_proxy/v4/letter/b/ea5d25/32.png) [@ben.boeckel](https://discourse.cmake.org/u/ben.boeckel)
#### Post date: [February 9, 2026, 5:21am UTC](https://discourse.cmake.org/t/getting-a-bad-g-commandline-using-several-configurations-help-wanted/15401/4 "2026-02-09T05:21:31Z")

</div>

> [@janheckman](#):
>
> ` $<$<CONFIG:Debug>:_DEBUG;_ITERATOR_DEBUG_LEVEL=0>`

This looks very wrong. Use `$<SEMICOLON>` to avoid improper splitting here.

> [@janheckman](#):
>
> `set(SHAPELIB_BASE_LIBPATH "~/projects/shapelibport/build/shapelib" CACHE STRING "" FORCE)`

Don’t use `~`. This only expands at the start of an argument in bash, so `-fsomeflag=~/foo` needs program support to re-expand that `~` to a real path.
