问题很简单,如果我有以下结构的 CMake 项目
sources/foo.cpp
sources/bar/foo.cpp
cmake 是否保证不存在不同目录下相同文件名的编译冲突?
答案 0 :(得分:3)
cmake 是否保证不存在不同目录下相同文件名的编译冲突?
Cmake 在处理两个同名文件时没有问题。如果不这样做,那将毫无用处。
至于“保证”,来自cmake licensing:
<块引用>CMake 在 OSI 批准的 BSD 3 条款许可下分发。
在 BSD 3 clause license 的结尾和 cmake sources/copyright.txt 中,您可以阅读:
<块引用>本软件由版权所有者和贡献者“按原样”提供,并提供任何明示或暗示的保证,包括但不限于适销性和针对特定用途的适用性的暗示保证。 [...]
该软件是免费的,不提供任何形式的保证。
答案 1 :(得分:1)
是的 cmake 处理它
我创建了 3 个文件:
codeTest.h
codeTest.cpp
src/codeTest.cpp
在根目录的codeTest.cpp
中定义了一个打印数据的函数,并在src/codeTest.cpp
中定义了“main”函数,并在“main”中使用了打印函数,然后使用cmake编译了它
add_executable(codeTest src/codeTest.cpp codeTest.cpp)
它奏效了
codeTest.h
#ifndef CODETEST_H_
#define CODETEST_H_
#include<stdio.h>
void printTest();
#endif /* CODETEST_H_ */
codeTest.cpp
#include <../codeTest.h>
void printTest()
{
printf(" void printTest() \n");
}
src/codeTest.cpp
#include <../codeTest.h>
int main()
{
printTest();
return 1;
}