我在使用Cmake时遇到了一些麻烦。在我启动项目时,似乎我做了一些让Cmake添加参数的东西。以下是我的运行配置。
当我调试它时,我可以看到"/home/gel/unix/DB1457--LAB2/cmake-build-debug/lab2"
具有值:
-p 8080
(它是编译的目标文件的路径)。
如果有的话,它应该是cmake_minimum_required(VERSION 3.8)
project(lab2)
set(CMAKE_C_STANDARD 99)
file(GLOB_RECURSE SORUCE_FILES "webserver/src/*.c")
file(GLOB_RECURSE SOURCE_HEADERS "webserver/includes/*.h")
set(INCLUDE_DIRS "webserver/includes")
foreach (_headerFile $(SOURCE_HEADERS))
get_filename_component(_dir ${_headerFile} PATH)
list (APPEND INCLUDE_DIRS ${_dir})
endforeach()
list(REMOVE_DUPLICATES INCLUDE_DIRS)
include_directories(${INCLUDE_DIRS})
add_executable(lab2 ${SORUCE_FILES} ${HEADER_FILES})
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
target_link_libraries(lab2 Threads::Threads)
,对吧?
这是我的CMakeLists:
{{1}}
答案 0 :(得分:0)
不,argv
中的第一个字符串始终是可执行文件的路径。实际参数从索引1开始。
在您的示例中,argv[1]
将包含" -p"并且argv[2]
将有" 8080"因为它们是两个独立的参数。如果您希望将它们作为一个参数传递,您需要将它们用引号括起来或删除它们之间的空格。